Группировка пользовательских сообщений по пользовательским именам таксономии

Я пытаюсь отобразить список пользовательских сообщений, сгруппированных по категориям, используя решение отсюда (первый вариант / пример). Я немного адаптировал код к моим потребностям, но он замораживает (получает белый дисплей, если он не комментируется) моя установка / блог из-за этой строки (как мне кажется): $term_ids = array_map(function($t) { return $t->term_id, }, $terms); , Я нашел это, комментируя части кода. Что с этим не так?

Мой полный код:

 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 } } 

Solutions Collecting From Web of "Группировка пользовательских сообщений по пользовательским именам таксономии"

Вы должны написать следующее:

$term_ids = array_map( function( $t ) { return $t->term_id ; }, $terms );

Также в коде у вас есть get_terms где вы прямо пишете имя таксономии. Это устарело в пользу следующего:

 $terms = get_terms( array( 'taxonomy' => 'event-categories', 'hide_empty' => false, ) ); 

Начиная с 4.5.0, таксономии должны передаваться через аргумент «таксономия» в массиве $ args:

Второй вопрос

О том, почему у вас есть пустые сообщения:

Вы ищете по умолчанию в сообщениях с post_type = post.

Вы должны искать свой пользовательский post_type следующим образом:

 $posts = get_posts( array( 'post_type' => 'custom_post_type', 'nopaging' => true, 'tax_query' => array( array( 'taxonomy' => 'event-categories', 'terms' => $term_ids , ) ), ) ); 

Я удалил 'field' => 'id' потому что по умолчанию он получает term_id а принятые значения:

  • 'Term_id'
  • 'имя'
  • «Слизняк»
  • 'Term_taxonomy_id'