toscho.design

WordPress: /seite/ statt /page/

Der Slug für paginierte Ausgaben steht zwar nicht für Übersetzungen zur Verfügung, kann aber seit WordPress 3.1 geändert werden. Möchte man also statt /page/ lieber /seite/ verwenden, ändert man einfach $GLOBALS['wp_rewrite']->pagination_base.

GitHub: https://gist.github.com/3400778

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Page to Seite
 * Plugin URI:  http://toscho.de/?p=2079
 * Description: Ersetzt <code>/page/</code> durch <code>/seite/</code>.
 * Version:     2012.08.20
 * Required:    3.3
 * 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()
    {
        if ( 'deactivate_' . plugin_basename( __FILE__ ) === current_filter() )
        {
            remove_action( 'init', 't5_page_to_seite' );
        }
        add_action( 'init', 'flush_rewrite_rules', 11 );
    }
}

Stellt man eine bestehende Website um, möchte man sicher noch eine Umleitung in der .htaccess einrichten:

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

Die könnte man auch in WordPress erledigen, aber der Server ist natürlich viel schneller.

4 Kommentare

  1. Markus am 20.09.2012 · 18:04

    erst mal eine Änfangerfrage:

    Der Code oben gehört (ohne die erste Zeile mit <?php ...) in die functions.php des Themes, oder?

    Ich habe es probiert und in meine bestehende Website eingefügt, dann werden zwar die Links umgeschrieben, aber ich lande auf der 404-Seite, die URLs mit "seite" werden also nicht gefunden.

  2. Thomas Scholz am 20.09.2012 · 19:33

    @Markus: Der Code ist ein vollständiges Plugin – und er funktioniert auch nur als solches.

    Nach dem Aktivieren des Plugins werden die neuen Permalinks bei WordPress automatisch angemeldet, beim Deaktivieren bekommst du die alten Regeln zurück. Die .htaccess mußt du freilich von Hand anpassen.

  3. Markus am 20.09.2012 · 23:39

    okay, danke, ich habe es nun als plugin hochgeladen und aktiviert, aber immer noch das gleiche problem, daß die links zwar nun benannt sind mit "seite", aber diese URLs dann einen 404-fehler bringen. habe wp 3.4.1. habe letzt irgendwo schonmal gelesen, daß so ein code nicht mehr klappt mit neuerem wp, weiß aber nicht mehr, ob es auch deiner war.

  4. Thomas Scholz am 21.09.2012 · 01:29

    @Markus: Das funktioniert auch mit dem aktuellen WordPress noch. Ich habe das auf einigen Seiten im Einsatz. Eventuell fasst dir ein anderes Plugin dazwischen, oder du hast eine Seite mit dem Slug seite. Das kann ich aus der Ferne nicht beurteilen.