it-swarm.com.de

Ändern Sie die "Seite" in Paginierung

Einfache Frage. Wenn die Paginierung aktiviert ist, ändert sich die URL in "site.com/page/2". Für meine Site sollte dies "site.com/paggetto/2" sein.

Wie kann ich diese Umschreiberegel ändern? Ich möchte auch "author" und andere Variablen ändern.

13
DarkGhostHunter

Für einige Websites in Deutsch verwende ich das folgende Plugin, um page in seite (das deutsche Wort für page) zu übersetzen:

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Page to Seite
 * Description: Ersetzt <code>/page/</code> durch <code>/seite/</code>.
 * Author:      Thomas Scholz <[email protected]>
 * Author URI:  http://toscho.de
 * 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 );
    }
}

Beachten Sie, dass Sie die Umschreibungsregeln bei der Deaktivierung only löschen. Sie benötigen eine separate Umschreiberegel in Ihrem .htaccess, um alte URLs zu den neuen umzuleiten:

RedirectMatch Permanent ^/(.*)/page/(.*) /$1/seite/$2
15
fuxia

Herausgefunden:

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        = 'buscar';
    $wp_rewrite->comments_base      = 'comentarios';
    $wp_rewrite->pagination_base    = 'pagina';
    $wp_rewrite->flush_rules();
}
add_action('init', 're_rewrite_rules');

Zumindest wird das den Job machen.

17
DarkGhostHunter

Diese Funktion arbeitet direkt mit Ihrem Übersetzungspaket zusammen, formatiert Ihre neue Basis und verhindert, dass die Funktion flush_rewrite_rules mehrmals ausgeführt wird, um eine schlechte Leistung Ihres Blogs zu vermeiden.

function my_change_rewrite_base() {
    global $wp_rewrite;
    $bases = array(
        'author' => __('Author'), 
        'search' => __('Search'), 
        'comments' => __('Comments)', 
        'pagination' => __('Page')
    );

    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');
1
ovitinho

Folgendes hat für mich funktioniert:

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' );
0
michalzuber