web-dev-qa-db-fra.com

Est-il possible d'obtenir dynamiquement le terme interrogé ET la taxonomie?

Je ne sais pas si cela est possible, mais j'essaie de faire fonctionner mon fichier taxonomy.php de la même manière pour les 10 de mes taxonomies personnalisées. Le code ci-dessous fonctionne exactement comme j'en ai besoin (c'est-à-dire: à une URL se terminant par ../inventory/yearmade/2017/ toutes les publications avec le terme de taxonomie yearmade de 2017 sont bouclés et sortis (ou toute année entrée à la fin de l'url).

Mais je dois actuellement créer 10 fichiers taxonomie - [ taxonomie ]. Php différents, chacun avec le changement de code d'un chaîne différente dans le taxonomy => '___' (fabrication annuelle, marque, modèle, longueur, poutre, moteur, taille, puissance, entraînement, remorque).

J'ai pu utiliser 'terms' => '$queried_object->slug' (ligne 8) pour le chargement dynamique du terme. Existe-t-il un moyen de faire de même pour la taxonomie?

J'ai essayé la même chose sur la ligne 6: 'taxonomy' => '$queried_object->slug' mais cela ne fonctionne pas.

<?php
  $queried_object = get_queried_object();
  $query = new WP_Query( array(
    'post_type' => "inventory",
    'tax_query' => array(
      array(
        'taxonomy' => "yearmade',
        'field' => "slug",
        'terms' => "$queried_object->slug",
      )
    )
  ) );
  while ( $query->have_posts() ) : $query->the_post(); ?>

    <div>
      <h2><?php the_title(); ?></h2>
      <ul>
        <li>Year: <?php the_terms( $post->ID, 'yearmade'); ?>
        <li>Make: <?php the_terms( $post->ID, 'make'); ?>
        <li>Model: <?php the_terms( $post->ID, 'model'); ?>
        <li>Length: <?php the_terms( $post->ID, 'length'); ?>
        <li>Beam: <?php the_terms( $post->ID, 'beam'); ?>
        <li>Engine: <?php the_terms( $post->ID, 'engine'); ?>
        <li>Size: <?php the_terms( $post->ID, 'size'); ?>
        <li>Horsepower: <?php the_terms( $post->ID, 'horsepower'); ?>
        <li>Drive: <?php the_terms( $post->ID, 'drive'); ?>
        <li>Trailer: <?php the_terms( $post->ID, 'trailer'); ?>
      </ul>
    </div>

  <?php endwhile; ?>
<?php wp_reset_query(); ?>
1
codeview

Dans un modèle de taxonomie, l'objet interrogé est une instance de WP_Term , dont l'un des champs sera la taxonomie d'où provient le terme.

Vous pouvez donc commencer votre taxonomy.php comme suit:

$queried_object = get_queried_object () ;
$args = array (
    'post_type' => 'inventory',
    'tax_query' => array (
        array (
            'taxonomy' => $queried_object->taxonomy,
            'field' => 'slug',
            'terms' => $queried_object->slug,
            ),
        ),
    ) ;
$query = new WP_Query ($args) ;