web-dev-qa-db-fra.com

La fonction get_queried_object () renvoie NULL dans une taxonomie personnalisée

Salut, j'ai besoin d'obtenir l'ID du terme à partir de la taxonomie personnalisée, mais il est toujours NULL.

taxonomy-galerie-kategorie.php

<?php
    /**
     * A custom taxonomy template for gallery.
     */
?>
<?php Starkers_Utilities::get_template_parts( array( 'parts/shared/html-header', 'parts/shared/header' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( 'parts/templates/header-image' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( 'parts/templates/gallery' ) ); ?>

<?php Starkers_Utilities::get_template_parts( array( 'parts/shared/footer','parts/shared/html-footer' ) ); ?>
query_posts(['post_type' => 'galerie']);
    $terms = get_categories([
    'taxonomy' => 'galerie-kategorie',
    'hide_empty' => false,
    'orderby' => 'date',
    'order' => 'ASC'
]);
var_dump(get_queried_object());

Quelqu'un peut-il m'aider s'il vous plaît?

1
d3tr1tus

Vous n'avez pas du tout besoin d'utiliser de requête, surtout pas query_posts.

Utilisez plutôt le pre_get_posts action pour vous assurer que toute requête pour cette taxonomie pour une archive frontale, a les types de publication appropriés:


add_action( 'pre_get_posts', function( \WP_Query $q ) {
    // we only want the main query for galerie-kategorie archives
    if ( ! $q->is_main_query() || !$q->is_tax( 'galerie-kategorie' ) ) {
        return;
    }
    $q->set( 'post_type', 'galerie' );
});

Maintenant, il s'assurera que WP saisit ce que vous vouliez la première fois.

Sinon, en utilisant un tout nouveau WP_Query/query_post vous:

  • doubler le nombre de requêtes, WP a fait tout ce travail et vous venez de le jeter à la poubelle et lui avez dit de tout recommencer! Pauvre WP = :(
  • Rendez votre page deux fois plus lente qu'elle doit tout faire deux fois
  • Brise la pagination! Maintenant, vous devez faire une tonne de travail supplémentaire pour le faire fonctionner à nouveau, et vous devez écrire du code de pagination personnalisé pour que les liens fonctionnent
  • Introduit des problèmes de compatibilité avec les plugins et le code qui utilisent pre_get_posts
  • Rend votre code plus long
  • Encombré vos modèles, un pre_get_post le filtre peut être masqué dans functions.php

Si jamais vous avez besoin de modifier ro changer les messages WP récupère de la base de données, utilisez pre_get_posts. Pensez-y comme changer votre commande de nourriture avant de la donner à la cuisine. La dernière chose que vous voulez est de commander de la nourriture, de la faire arriver, puis de changer d'avis et d'attendre à nouveau de la nouvelle nourriture.

1
Tom J Nowell