J'essaie d'afficher une liste de messages personnalisés regroupés par catégories à l'aide d'une solution de ici (la 1ère option/exemple). J'ai adapté le code seulement un peu à mes besoins, mais il gèle mon installation/blog (obtention d'un affichage blanc si ce n'est pas commenté), à cause de cette ligne (comme il me semble): $term_ids = array_map(function($t) { return $t->term_id, }, $terms);
. J'ai trouvé cela en commentant des parties du code. Qu'est-ce qui va pas avec ça?
Mon code complet:
function yesterday_events2() {
$terms = get_terms( 'event-categories' );
$term_ids = array_map( function( $t ) { return $t->term_id }, $terms );
$posts = get_posts(
array(
'nopaging' => true,
'tax_query' => array(
array(
'taxonomy' => 'event-categories',
'field' => 'id',
'terms' => $term_ids,
) ),
) );
foreach( $terms as $t ) {
$posts_in_term = array_filter( $posts, function( $p ) use ( $t ) {
// has_term likely triggers a DB hit...
return has_term( $t->term_id, 'event-categories', $p );
} );
// do stuff with $posts_in_term
}
}
Vous devriez l'écrire comme suit:
$term_ids = array_map( function( $t ) { return $t->term_id ; }, $terms );
Également dans le code, vous avez le get_terms
où vous écrivez directement le nom de taxonomie. Cela a été déconseillé en faveur de ce qui suit:
$terms = get_terms( array(
'taxonomy' => 'event-categories',
'hide_empty' => false,
) );
Depuis la version 4.5.0, les taxonomies doivent être passées via l’argument ‘taxonomy’ dans le tableau $ args:
Pourquoi avez-vous un message vide?
Vous recherchez par défaut dans les publications avec post_type = post.
Vous devriez rechercher votre post_type personnalisé comme ceci:
$posts = get_posts(
array(
'post_type' => 'custom_post_type',
'nopaging' => true,
'tax_query' => array(
array(
'taxonomy' => 'event-categories',
'terms' => $term_ids ,
) ),
) );
J'ai supprimé le 'field' => 'id'
car, par défaut, il obtient le term_id
et les valeurs acceptées sont les suivantes: