Cambiare lo slug "page" nella paginazione

1 lug 2012, 05:34:16
Visualizzazioni: 27.7K
Voti: 17

Domanda semplice. Quando la paginazione è attivata, l'URL cambia in "site.com/page/2". Per il mio sito, dovrebbe essere "site.com/paggetto/2".

Come posso modificare quella regola di riscrittura? Vorrei anche modificare "author" e altre variabili.

0
Tutte le risposte alla domanda 4
1
23

Risolto:

function re_rewrite_rules() {
    global $wp_rewrite;
    // $wp_rewrite->author_base = $author_slug;
//  print_r($wp_rewrite);
    $wp_rewrite->author_base        = 'autore';
    $wp_rewrite->search_base        = 'cerca';
    $wp_rewrite->comments_base      = 'commenti';
    $wp_rewrite->pagination_base    = 'pagina';
    $wp_rewrite->flush_rules();
}
add_action('init', 're_rewrite_rules');

Almeno, questo farà il lavoro.

1 lug 2012 06:40:15
Commenti

Solo un piccolo avviso, dato quanto estremamente costoso $wp_rewrite->flush_rules(); è in termini di prestazioni, non dovresti mai usarlo su init, un'opzione molto migliore è semplicemente visitare la pagina delle opzioni dei Permalink e salvare le modifiche un paio di volte, questo li aggiornerà per te.

Andre A Andre A
24 lug 2012 14:50:34
2
20

Per alcuni siti in tedesco utilizzo il seguente plugin per tradurre page in seite (la parola tedesca per page):

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Page to Seite
 * Description: Sostituisce <code>/page/</code> con <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 );
    }
}

Nota che le regole di riscrittura vengono svuotate solo durante l'attivazione/disattivazione soltanto. Avrai bisogno di una regola di riscrittura separata nel tuo file .htaccess per reindirizzare i vecchi URL ai nuovi:

RedirectMatch Permanent ^/(.*)/page/(.*) /$1/seite/$2
1 lug 2012 14:52:37
Commenti

Qual è la differenza tra $GLOBALS['wp_rewrite']->pagination_base = 'seite' e $wp_rewrite->search_base = 'buscar'; ?

DarkGhostHunter DarkGhostHunter
2 lug 2012 00:05:51

Ci sono differenze sottili e non intuitive tra global $var; e $GLOBALS['var']. Non importa in questo caso, ma tieni presente che la seconda forma è più affidabile e più facile da leggere/capire.

fuxia fuxia
2 lug 2012 00:09:47
0

Questa funzione lavorerà direttamente con il tuo pacchetto di traduzione, formattando la nuova base e impedendo l'esecuzione multipla della funzione flush_rewrite_rules evitando così un calo delle prestazioni del tuo blog.

function my_change_rewrite_base() {
    global $wp_rewrite;
    $bases = array(
        'author_base' => __('Autore'), 
        'search_base' => __('Cerca'), 
        'comments_base' => __('Commenti'), 
        'pagination_base' => __('Pagina')
    );

    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');
14 feb 2019 02:29:59
3

Il seguente codice ha funzionato per me:

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' );
2 mar 2019 11:11:01
Commenti

Qualche idea per rimuovere "page" dallo slug per la paginazione? Di default mydomain/page/2. Vorrei che fosse mydomain/1 Grazie in anticipo!

Jornes Jornes
7 gen 2023 17:19:42

Non lo consiglierei @Jornes, creerebbe troppa confusione con post/pagine che non usano un prefisso (slug).

Beee Beee
29 mar 2023 13:47:14

@Beee Sì. Ha senso. Ora lo lascio così com'è.

Jornes Jornes
27 giu 2023 12:22:22