WordPress : WP Query fonctionne en dehors d’une fonction, pas à l’intérieur d’une fonction
Solution : ce qui a fonctionné à la fin a été d’ajouter
global $post;
en haut de la requête, donc avant
$custom_taxterms = ...
La boucle personnalisée Genesis de Bill Erickson est le modèle que j’ai finalement suivi.
Question originale
J’espérais de l’aide pour un problème qui me bloque.
J’ai la requête suivante. Il fonctionne et produit des données.
$custom_taxterms = wp_get_object_terms( $post->ID, 'region', array('fields' => 'ids') );
// arguments
$args = array(
'post_type' => 'stay',
'post_status' => 'publish',
'posts_per_page' => 25, // you may edit this number
'orderby' => 'rand',
'tax_query' => array(
array(
'taxonomy' => 'region',
'field' => 'id',
'terms' => $custom_taxterms
)
),
'post__not_in' => array ($post->ID),
);
$related_items = new WP_Query( $args );
// loop over query
if ($related_items->have_posts()) :
echo '<ul>';
while ( $related_items->have_posts() ) : $related_items->the_post();
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
echo '</ul>';
endif;
// Reset Post Data
wp_reset_postdata();
Si je le mets maintenant dans une fonction, il cesse de fonctionner.
add_action( 'genesis_loop', 'related_posts_cpt' );
function related_posts_cpt (){
// same loop as above
}
Juste pour être clair, si j’utilise la même fonction avec une sortie différente, cela fonctionne:
add_action( 'genesis_loop', 'related_posts_cpt' );
function related_posts_cpt() {
?>
<p>AAAAAAAAHHHHHH</p>
<?php
}
Qu’est-ce que je rate? Merci en avance.
Solution n°1 trouvée
les fonctions renvoient une sortie. vous ne voulez pas simplement l’écho.
essayez ceci comme fonction:
function mycoolquery() {
$custom_taxterms = wp_get_object_terms( $post->ID, 'region', array('fields' => 'ids') );
// arguments
$args = array(
'post_type' => 'stay',
'post_status' => 'publish',
'posts_per_page' => 25, // you may edit this number
'orderby' => 'rand',
'tax_query' => array(
array(
'taxonomy' => 'region',
'field' => 'id',
'terms' => $custom_taxterms
)
),
'post__not_in' => array ($post->ID),
);
$related_items = new WP_Query( $args );
// loop over query
if ($related_items->have_posts()) :
$output = '<ul>';
while ( $related_items->have_posts() ) : $related_items->the_post();
$output .= '<li><a href="'.the_permalink().'">'.the_title().'</a></li>';
endwhile;
$output .= '</ul>';
endif;
// Reset Post Data
wp_reset_postdata();
return $output;
}
puis faites écho à la fonction où vous le souhaitez:
echo mycoolquery();
0 commentaire