페이지 매김에서 "페이지"슬러그 변경


13

간단한 질문입니다. 페이지 매김이 활성화되면 URL이로 변경됩니다 "site.com/page/2". 내 사이트의 경우이어야합니다 "site.com/paggetto/2".

다시 쓰기 규칙을 어떻게 변경할 수 있습니까? 또한 "author"다른 변수 를 변경 하고 싶습니다 .

답변:


16

독일어로 된 일부 사이트의 경우 다음 플러그인을 사용하여 (의 독일어 단어 ) 를 번역 page합니다 .seitepage

<?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 );
    }
}

비활성화 / 재 활성화시 에만 다시 쓰기 규칙을 플러시합니다 . .htaccess기존 URL을 새 URL로 리디렉션하려면 별도의 다시 쓰기 규칙이 필요 합니다.

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

1
$ GLOBALS [ 'wp_rewrite']-> pagination_base = 'seite'와 $ wp_rewrite-> search_base = 'buscar'의 차이점은 무엇입니까? ?
DarkGhostHunter

1
미묘하고 직관적 있습니다 차이 사이 global $var;$GLOBALS['var']. 이 경우에는 중요하지 않습니다. 후자의 형식이 더 안정적이며 읽기 쉽고 이해하기 쉽다는 것을 명심하십시오.
fuxia

18

알아 낸 것 :

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

적어도 그 일을 할 것입니다.


11
$wp_rewrite->flush_rules();성능 측면에서 비용 이 매우 많이 들기 때문에 단 한 번의 작은 통지 만 사용하면 안됩니다 init. 더 나은 옵션은 Permalink 옵션 페이지를 방문하여 변경 사항을 몇 번 저장하여 변경하는 것입니다. .
Andre A

1

이 기능은 번역 패키지와 직접 작동하여 새 기본 형식을 지정하며 flush_rewrite_rules 기능이 블로그의 성능 저하를 피하기 위해 두 번 이상 실행되지 않도록합니다.

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

다음은 나를 위해 일했습니다.

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' );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.