Les pages de type de publication personnalisées sont «introuvables»

17

J'ai créé deux nouveaux types de messages personnalisés à l'aide de code que j'ai utilisé avec succès sur d'autres projets sans problème. Le premier est appelé top_charts, l'autre case_studies, et les deux apparaissent correctement dans le menu d'administration et je peux créer de nouveaux messages.

Malheureusement, les nouveaux messages n'apparaissent pas. Je reçois juste une 404.phpréponse.

J'ai créé un archive-top_charts.phppour voir si je peux faire apparaître quoi que ce soit, mais je vois une 404.phpréponse "page non trouvée".

J'ai initialement nommé les messages personnalisés top-chartset case-studies, mais je pensais que le trait d'union pouvait être le problème, et les ai donc renommés pour utiliser un trait de soulignement à la place. Ça n'a pas aidé.

J'ai essayé de réenregistrer mes liens permanents, mais rien n'a changé. Ma page .htaccess ressemble aussi à ce que vous attendez (et les autres pages fonctionnent bien). Que puis-je vérifier d'autre?

Django Reinhardt
la source
1
avez-vous utilisé flush_rewrite_rules (false); dans le registre type de message? pour plus de détails, suivez ce lien nooshu.com/page-not-found-with-custom-post-types
jas
Merci. Cela a corrigé le lien vers le message lui-même, mais pas la archive-top_charts.phppage. Étrange!
Django Reinhardt
Il suffit d'en ajouter une partie en réponse qui peut aider d'autres utilisateurs et essayer de rechercher des archives également.
Jas
a trouvé la réponse simple à ce bogue sur un autre message de la pile: Type de message personnalisé Page Permalink Page Not Found
dnll

Réponses:

19

Pour corriger le message personnalisé introuvable, veuillez utiliser le code ci-dessous dans votre functions.php:

flush_rewrite_rules( false );

Vous ne devez le faire que comme mesure temporaire, sinon il s'exécutera à chaque chargement de page.

Pour plus de détails, veuillez suivre ce lien

Pour ce qui est de archive-top_charts.phpne pas apparaître, assurez-vous de l'avoir 'has_archive' => truelorsque vous enregistrez votre type de message.

jas
la source
génial vous avez trouvé 'has_archive' :)
jas
27

Vous n'avez pas à modifier votre code php!

Bien que vous puissiez le faire dans la fonction qui enregistre votre type de publication personnalisé, comme les autres réponses, vous pouvez également le faire dans le menu des paramètres, évitant ainsi de toucher votre code php:

Pour vider les règles de réécriture de WordPress ou les permaliens (doit généralement être fait manuellement pour les nouveaux types de publication personnalisés) à partir du tableau de bord:

  1. Dans le menu principal, recherchez "Paramètres> Permaliens".
  2. Faites défiler vers le bas si nécessaire et cliquez sur "Enregistrer les modifications".
  3. Les règles de réécriture et les permaliens sont vidés.

C'est si simple!

image de la page d'enregistrement des permaliens référence

Danny
la source
2
Je crois que j'avais également besoin has_archive, mais bon de savoir que vous pouvez forcer une chasse d'eau dans le menu.
Django Reinhardt
1
Existe-t-il un moyen d'enregistrer automatiquement les modifications apportées aux (permaliens) plutôt que d'aller dans Paramètres> Permaliens chaque fois qu'une catégorie / un terme CPT est ajouté? Par exemple, comment les non-administrateurs pourront-ils le faire s'ils n'ont pas accès aux paramètres? Un crochet peut-il être appelé lors de l'ajout d'une nouvelle catégorie pour vider automatiquement les permaliens?
Ryan Coolwebs
0

Je me rends compte que c'est tard dans le jeu (et ce n'est peut-être pas le problème connexe), mais je voulais signaler aux autres un problème possible.

Dans mon cas, j'avais défini ma réécriture de la taxonomie sur les outils et la réécriture du type de contenu sur la même chose. Par conséquent, cela ne fonctionnerait jamais correctement car il s'agissait d'un conflit. Malheureusement, il n'y a pas de détection pour une telle chose, alors j'ai pensé que je le signalerais aux autres.

shaneonabike
la source
-1

Dans mon cas, il manquait des droits dans mon dossier de développement, donc le fichier .htaccess n'aurait pas pu être créé ou modifié.

Donc, le rinçage manuel ou l'enregistrement des modifications dans WP Permalinks n'aidait pas.

La solution était de créer moi-même un fichier .htaccess

David Salcer
la source