web-dev-qa-db-fra.com

meta_key & meta_value ne fonctionne pas avec get_pages et la taxonomie personnalisée

J'essaie d'utiliser une taxonomie personnalisée avec des pages. Fondamentalement, une page a une taxonomie de "pertinence", décrivant en quoi la page est pertinente. Les pages sont créées dans une hiérarchie basée sur la structure départementale du district scolaire auquel le site est destiné. Donc, disons que je suis sur la page des anciens et que je veux énumérer toutes les pages enfants de services éducatifs qui sont pertinentes, comme comment obtenir vos relevés de notes.

J'ai essayé les deux méthodes suivantes

<?php 
  $pages = get_pages( array( 'child_of' => '65','hierarchical' => 0, 'meta_key' => 'relevance', 'meta_value' => 'alumni' ) );
  foreach ( $pages as $page ) {
    echo $page->post_title;
  }
 ?>

et

<?php wp_list_pages( array( 'child_of' => '65', 'meta_key' => 'relevance', 'meta_value' => 'alumni') ); ?>

les deux affichent les pages enfants de 65 sans les propriétés meta_key & meta_value, mais une fois que je les ai eues, je ne reçois rien. Je suis super positif, les valeurs sont correctes.

J'ai aussi essayé ..

'relevance' => 'alumni',

comme vous le feriez dans une requête, mais cela ne fonctionne pas avec ces fonctions.

Une idée pourquoi ça ne marcherait pas? La fonction get_pages liste meta_key & meta_value sous usage et indique que vous devez définir hierarchical à 0, ce que j'ai fait.

1
Tiffany Israel

Les taxonomies personnalisées ne sont pas des méta-valeurs, mais plutôt leur propre chose. Je ne pense pas que wp_list_pages() ou get_pages() puisse interroger en fonction d'une taxonomie. Je vous recommande donc d'utiliser WP_Query à la place:

<?php
$relevant_pages_args = array(
    'post_type' => 'page',
    'posts_per_page' => -1,
    'post_parent' => 65,
    'tax_query' => array(
        array(
            'taxonomy' => 'relevance',
            'field' => 'slug',
            'terms' => 'alumni'
        )
    )
);

$relevant_pages = new WP_Query( $relevant_pages_args );

if( $relevant_pages->have_posts() ) : while( $relevant_pages->have_posts() ) : $relevant_pages->the_post(); ?>

    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php endwhile; endif; wp_reset_postdata(); ?>
3
mrwweb