• Здравствуйте!
    Есть сайт на самопальном движке, который я переношу на wordpress.
    В старой версии постраничная навигация в рубриках вида /page_2.mgr, а на wordpresse с ЧПУ /page/2

    Возможно ли изменить вид навигационных урлов в категириях таким образом?

    На сайте стоит wordpress 2.6.3, из плагинов Advanced Permalinks, rus2lat, page-navi.

    здесь описана похожая вещь, но не совсем и в категориях не работает.

    Очень нужна ваша помощь!

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Как вариант, можно перенаправить ссылки первого варианта на второй с кодом 301 (permanent redirect) — поисковые системы его понимают. Или необходимо всё же изменить вид?

    Да, это очень желательно, потому что индексация и вес страниц при перенаправлении будут потеряны…

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    1. Код 301 как раз помогает сделать так, чтобы этого не произошло.
    2. Можно добавить фрагмент в functions.php активной темы:

    function my_paged_links($string, $type_of_url) {
    	if ( $type_of_url == 'paged' && is_category() ) {
    		$string = str_replace('/', '_', $string) . '.mgr';
    	}
    	return $string;
    }
    add_filter('user_trailingslashit', 'my_paged_links', 10, 2);
    
    function my_pagenum_link($link) {
    	if ( $_SERVER['REQUEST_URI'] != '/' ) {
    		preg_match('/\/page_[0-9]+\.mgr/', $_SERVER['REQUEST_URI'], $matches);
    		if ( !empty($matches) ) {
    			$link = str_replace($matches[0], '', $link);
    		}
    	}
    	return $link;
    }
    add_filter('get_pagenum_link', 'my_pagenum_link');
    
    function my_paged_links_add_rewrite_rules($wp_rewrite) {
    	if ( empty($wp_rewrite->category_base) )
    		$root = $wp_rewrite->front . 'category';
    	else
    		$root = $wp_rewrite->root . $wp_rewrite->category_base;
    
    	$new_rules = array(
    		trim($root, '/') . '/(.+?)/page_([0-9]+)\.mgr?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]'
    	);
    
    	$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }
    add_action('generate_rewrite_rules', 'my_paged_links_add_rewrite_rules');
    
    function my_paged_links_flush_rewrite_rules() {
    	global $wp_rewrite;
    	$wp_rewrite->flush_rules();
    }
    add_action('init', 'my_paged_links_flush_rewrite_rules');

Просмотр 3 ответов — с 1 по 3 (всего 3)

Тема «ЧПУ и постраничная навигация» закрыта для новых ответов.