web-dev-qa-db-fra.com

Comment créer une taxonomie personnalisée 404

Je n'arrive pas à trouver de documentation à ce sujet et Google ne montre que les résultats pour les personnes qui ont 404 pages en raison d'une taxonomie mal appliquée.

Je souhaite afficher une page 404 personnalisée pour ma taxonomie personnalisée. J'espère qu'il y aura une convention de nommage simple comme avec taxonomy-{taxonomyName}.php. Peut-être que quelque chose comme 404-taxonomy-{taxonomyName}.php

S'il n'y a rien de tel, alors quel serait le meilleur moyen de capturer la tentative de page de taxonomie à partir du modèle 404 principal par défaut?

Existe-t-il quelque chose dans WordPress qui pourrait aider à cela, ou devrais-je analyser l'URL pour déterminer si l'utilisateur est sur une page de taxonomie?

Juste au cas où cela aiderait, voici un exemple de mon cas d'utilisation.

Un utilisateur utilise Google Autocomplete pour sélectionner son emplacement. Les utilisateurs sont ensuite redirigés vers la page de taxonomie de leur emplacement. EXEMPLE, l’utilisateur sélectionne Toronto, Ontario, Canada et est redirigé vers mysite.com/location/canada/ontario/toronto.

À l'heure actuelle, si ces emplacements existent, le modèle de taxonomie entre en jeu et affiche tous les messages qui lui appartiennent. Si cet emplacement n'existe pas, la page 404 standard s'affiche. Je veux être capable de montrer quelque chose comme "désolé, mais il n'y a aucune liste dans votre région pour le moment".

Toute pensée ou idée serait très utile!

1
Harmonic

Vous pouvez filtrer tout type de modèle pour remplacer la hiérarchie des modèles. Dans ce cas, le filtre est 404_template.

Nous vérifierons si la requête location var est définie, ce qui signifie que l'URL correspond au modèle d'une requête location, mais le résultat est 404. Dans ce cas, nous chargeons le modèle 404-taxonomy-location.php.

function wpd_custom_tax_404( $templates ){
    if( '' !== get_query_var( 'location' ) ){
        $templates = locate_template( '404-taxonomy-location.php', false );
    }
    return $templates;
}
add_filter( '404_template', 'wpd_custom_tax_404' );

Ce code devrait aller dans le fichier functions.php de votre thème (enfant).

2
Milo