web-dev-qa-db-fra.com

base de la catégorie force - les pages d'archive fonctionnent AVEC & SANS catégorie slug dans l'URL?

J'ai besoin de messages de n'importe quelle catégorie (et pages d'archives) pour parcourir/blog /. J'ai ajouté "blog" à ma base de catégories, mais maintenant, les deux sites web website.com/blog/my-category/ ET site.com/my-category/ affichent le même contenu. Les posts uniques redirigent vers website.com/my-category/my-post-name

J'ai installé Yoast, je suis allé en arrière en essayant de choisir l'option "supprimer la base de la catégorie" et rien ne fonctionne. Il est désactivé maintenant pendant que je découvre cela.

Avez-vous une idée de la façon de forcer les pages de catégorie, d'archive et de publication individuelle à utiliser la base de catégories?

1
website walrus

J'ai trouvé une solution ici: 404 sur la pagination category.php

Donc, pour résoudre mon problème, je devais simplement ajouter ces règles de réécriture personnalisées au fichier functions.php:

add_action( 'init', 'wpa58471_category_base' );
function wpa58471_category_base() {
    add_rewrite_rule(
        'blog/([^/]+)/page/(\d+)/?$',
        'index.php?category_name=$matches[1]&paged=$matches[2]',
        'top' 
    );
    add_rewrite_rule( 
        'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$',
        'index.php?category_name=$matches[1]&feed=$matches[2]', 
        'top' 
    );
}

Désormais, toutes les pages de blog fonctionnent, y compris la page principale du blog, les archives, les catégories et les publications individuelles, à l'aide de la structure personnalisée permalien de/blog /% category /% postname%.

** AUSSI, si vous utilisez Yoast, assurez-vous de "conserver" la base de la catégorie (il s'agit de la valeur par défaut sous advanced-> permalinks)

1
website walrus