2017-01-17 2 views
0

J'utilise 2 catégories différentes dans mon site /blog/ et /news/. Je souhaite afficher la catégorie /news/ dans mes publications, mais je ne souhaite pas afficher la catégorie /blog/ dans l'URL des articles de blog.WP Permalinks: afficher un seul type de catégorie wp dans les messages url

J'ai déjà beaucoup de messages et de modèles différents pour chaque catégorie, donc je voudrais éviter de créer des pages pour cela. L'idée est la suivante:

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

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

Est-ce possible?

Répondre

0

Deux choses doivent être faites. Tout d'abord, faites en sorte que l'URL de vos posts soit différente à l'aide du filtre 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); 

En second lieu, que la règle de réécriture pour cela:

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

Notez que flush_rewrite_rules(); vous n'avez pas besoin d'exécuter chaque fois. Juste une fois. Ou vous pouvez aller à options-permalink.php et cliquez sur Enregistrer.

Je l'ai testé avec les paramètres suivants:

settings