Thay đổi trang slug của Slug trong phân trang


13

Câu hỏi đơn giản. Khi phân trang được kích hoạt, URL thay đổi thành "site.com/page/2". Đối với trang web của tôi, điều này nên được "site.com/paggetto/2".

Làm thế nào tôi có thể thay đổi quy tắc viết lại? Tôi cũng muốn thay đổi "author"và các biến khác.

Câu trả lời:


16

Đối với một số trang web bằng tiếng Đức, tôi sử dụng plugin sau để dịch pagesang seite(từ tiếng Đức cho page):

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

Lưu ý rằng bạn tuôn ra các quy tắc viết lại trên kích hoạt / de duy nhất . Bạn sẽ cần một quy tắc viết lại riêng trong bạn .htaccessđể chuyển hướng các URL cũ sang các URL mới:

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

1
Sự khác biệt giữa $ GLOBALS ['wp_rewrite'] -> pagination_base = 'seite' và $ wp_rewrite-> search_base = 'buscar'; ?
DarkGhostHunter

1
Có sự khác biệt tinh tế và không trực quan giữa global $var;$GLOBALS['var']. Không quan trọng trong trường hợp này, chỉ cần lưu ý rằng hình thức sau đáng tin cậy hơn và dễ đọc / dễ hiểu hơn.
fuxia

18

Tìm ra:

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

Ít nhất, điều đó sẽ làm công việc.


11
Chỉ cần một thông báo nhỏ, vì $wp_rewrite->flush_rules();hiệu suất cực kỳ tốn kém , bạn không bao giờ nên sử dụng nó init, một lựa chọn tốt hơn nhiều là chỉ cần truy cập trang tùy chọn Permalink và lưu các thay đổi một vài lần, điều đó sẽ giúp bạn thay đổi .
Andre A

1

Hàm này sẽ hoạt động trực tiếp với gói dịch của bạn, định dạng cơ sở mới của bạn và ngăn không cho chạy nhiều hơn một lần chức năng flush_rewrite_rules tránh hiệu suất kém của blog của bạn.

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

0

Sau đây làm việc cho tôi:

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' );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.