Schimbă slug-ul "page" în paginare
Întrebare simplă. Când paginarea este activată, URL-ul se schimbă în "site.com/page/2"
. Pentru site-ul meu, acesta ar trebui să fie "site.com/paggetto/2"
.
Cum pot schimba acea regulă de rescriere? De asemenea, vreau să schimb și "author"
și alte variabile.

Am rezolvat:
function re_rewrite_rules() {
global $wp_rewrite;
// $wp_rewrite->author_base = $author_slug;
// print_r($wp_rewrite);
$wp_rewrite->author_base = 'autor';
$wp_rewrite->search_base = 'cautare';
$wp_rewrite->comments_base = 'comentarii';
$wp_rewrite->pagination_base = 'pagina';
$wp_rewrite->flush_rules();
}
add_action('init', 're_rewrite_rules');
Măcar asta va face treaba.

Doar o mică observație, din cauza costului extrem de ridicat din punct de vedere al performanței al $wp_rewrite->flush_rules();
, nu ar trebui să îl folosiți niciodată pe init
, o opțiune mult mai bună este să vizitați pagina de opțiuni Permalink și să salvați modificările de câteva ori, acest lucru va regenera regulile pentru dumneavoastră.

Pentru unele site-uri în germană, folosesc următorul plugin pentru a traduce page
în seite
(cuvântul german pentru page
):
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 Page to Seite
* Description: Înlocuiește <code>/page/</code> cu <code>/seite/</code>.
* Author: Fuxia Scholz
* License: MIT
* License URI: http://www.opensource.org/licenses/mit-license.php
*/
if ( ! function_exists( 't5_page_to_seite' ) )
{
register_activation_hook( __FILE__ , 't5_flush_rewrite_on_init' );
register_deactivation_hook( __FILE__ , 't5_flush_rewrite_on_init' );
add_action( 'init', 't5_page_to_seite' );
function t5_page_to_seite()
{
$GLOBALS['wp_rewrite']->pagination_base = 'seite';
}
function t5_flush_rewrite_on_init()
{
add_action( 'init', 'flush_rewrite_rules', 11 );
}
}
Rețineți că resetarea regulilor de rescriere se face doar la activare/dezactivare numai. Veți avea nevoie de o regulă separată de rescriere în fișierul .htaccess
pentru a redirecționa URL-urile vechi către cele noi:
RedirectMatch Permanent ^/(.*)/page/(.*) /$1/seite/$2

Care este diferența dintre $GLOBALS['wp_rewrite']->pagination_base = 'seite' și $wp_rewrite->search_base = 'buscar'; ?

Există diferențe subtile și neintuitive între global $var;
și $GLOBALS['var']
. Nu contează în acest caz, doar ține minte că ultima formă este mai fiabilă și mai ușor de citit/înțeles.

Această funcție va lucra direct cu pachetul tău de traducere, formatând noua bază și va preveni rularea de mai multe ori a funcției flush_rewrite_rules, evitând astfel o performanță slabă a blogului tău.
function my_change_rewrite_base() {
global $wp_rewrite;
$bases = array(
'author_base' => __('Autor'),
'search_base' => __('Căutare'),
'comments_base' => __('Comentarii'),
'pagination_base' => __('Pagină')
);
foreach ($bases AS $key => $base) {
$wp_rewrite->{$key} = remove_accents(mb_strtolower($base));
}
if ( ! get_option('my_change_rewrite_base_flushed', false) ) {
flush_rewrite_rules();
update_option( 'my_change_rewrite_base_flushed', time());
}
}
add_action('init', 'my_change_rewrite_base');

Următoarea soluție a funcționat pentru mine:
function nw_strana() {
$GLOBALS['wp_rewrite']->pagination_base = 'strana';
}
add_action( 'init', 'nw_strana' );
function nw_rewrite( $rules ) {
$new_rules = array(
'obchod/strana/([0-9]{1,})/?$' => 'index.php?post_type=product&paged=$matches[1]',
);
$rules = array_merge( $new_rules, $rules );
return $rules;
}
add_filter( 'rewrite_rules_array', 'nw_rewrite' );
Acest cod schimbă URL-ul de paginare implicit din WordPress pentru posturile de tip "product" (produs).
nw_strana()
- Schimbă baza de paginare din "page" în "strana"nw_rewrite()
- Adaugă o nouă regulă de rescriere pentru URL-urile de tip "obchod/strana/2/"- Se folosește filtrul
rewrite_rules_array
pentru a modifica regulile de rescriere - Acțiunea este legată de hook-ul
init
pentru a se executa la momentul potrivit

Ai vreo idee cum să înlătur „page” din slug-ul pentru paginare? Implicit este mydomain/page/2. Aș vrea să fie mydomain/1 Mulțumesc anticipat!

Nu aș recomanda să faci asta @Jornes, ar crea prea multă confuzie cu articolele/paginile care nici ele nu folosesc un prefix (slug).
