2017-01-17 14 views
0

Я использую 2 разных категории на своем сайте /blog/ и /news/. Я хочу показать категорию /news/ в своих сообщениях, но я не хочу отображать категорию /blog/ в URL-адресе сообщений в блоге.WP Постоянная ссылка: отображение только одного типа категории wp в сообщениях url

У меня уже есть много сообщений и разных шаблонов для каждой категории, поэтому я бы хотел избежать создания страниц для этого. Идея заключается в следующем:

/news/ category --> index.php/news/post-name/ 

/blog/ category --> index.php/post-name/ 

Возможно ли это?

ответ

0

Должно быть сделано две вещи. Во-первых, ваш URL-адрес ваших сообщений отличается с помощью фильтра post_link.

function _20170117_post_link($url, $post, $leavename) { 
    if(in_category('news', $post)) { 

     $url = get_site_url() . '/news/' . $post->post_name ; 
    } 
    return $url; 
} 
add_filter('post_link', '_20170117_post_link', 10, 3); 

Во-вторых, сделать правила перезаписи для этого:

function _20170117_rewrite() { 
    add_rewrite_rule('^news/(.?.+?)(?:/([0-9]+))?/?$', 'index.php?pagename=$matches[1] 
&page=$matches[2]', 'top'); 
    add_rewrite_rule('^news/([^/]+)(?:/([0-9]+))?/?$', 'index.php?name=$matches[1] 
&page=$matches[2]', 'top'); 
    flush_rewrite_rules(); 
} 
add_action('init', '_20170117_rewrite'); 

Обратите внимание, что flush_rewrite_rules(); вам не нужно выполнять каждый раз. Только раз. Или вы можете перейти к options-permalink.php и нажать «Сохранить».

Я протестирована со следующими параметрами:

settings