Intereting Posts
Как добавить Cron в WordPress Как запросить сообщения WordPress по пользовательскому полю с максимальной длиной символов Загрузка изображений после загрузки страницы Проверьте, существует ли почтовый идентификатор в пользовательском типе сообщений, вне цикла перезапись не работает Как подсчитать другие должности, не имеющие конкретных таксономических условий? Предотвращать показ изображений на самообслуживании WordPress от WordPress.com WordPress Server Время не изменяется / отображается правильно Шаблоны пользовательских типов сообщений и пользовательских таксономий Какой плагин или тема WordPress используется для планирования занятий между учащимися и преподавателями и принятия платежей для таких, например, на сайте Italki? Trigger save as draft при загрузке изображения Будут ли множественные условия замедлять загрузку страницы? Неопознанная ошибка произошла при удалении категории Как использовать короткий код любого плагина, чтобы он визуально отображался там, где я хочу? Получить размеры логотипа

Получение всех категорий даже без продуктов под ним?

Я пытаюсь получить все категории, которые имеют продукты, но также и категории, которые не имеют продуктов.

Версия WordPress 4.6.1

wp_dropdown_categories( array( 'class' => 'product-category-field', 'id' => 'product-category', 'name' => 'category', 'taxonomy' => 'product_cat', 'selected' => get_query_var('product_cat' ), 'hierarchical' => 1, 'hide_empty' => 1, 'value_field' => 'slug', 'show_count' => 1 ) ); 

Даже get_terms отображает пустые категории с приведенным ниже кодом.

 <?php $terms = get_terms('product_cat', array( 'parent' => 0 )); if( $terms ): $original_query = $wp_query; foreach ( $terms as $key => $term ): ?> <li> <?php echo $term->name; ?> <ul> <?php $child_terms = get_terms( 'product_cat', array( 'child_of' => $term->term_id, 'hide_empty' => true ) ); foreach ( $child_terms as $child_term ) { $re_child_terms = get_terms( 'product_cat', array( 'child_of' => $child_term->term_id, 'hide_empty' => true ) ); if ( ! $re_child_terms ){ ?> <li> <?php echo $child_term->name; ?> </li> <?php } } ?> </ul> </li> <?php endforeach; $wp_query = null; $wp_query = $original_query; ?> </ul> <?php endif; ?> 

Примечание. В обоих случаях не нужно отображать категории с нулевыми продуктами.

Solutions Collecting From Web of "Получение всех категорий даже без продуктов под ним?"

Это очень просто, чтобы перечислить все категории, даже если у них нет сообщений, связанных с ними.

Вам просто нужно установить следующее свойство в false в wp_dropdown_categories . метод.

 'hide_empty' => 0, 'hide_if_empty' => 1 

Надеюсь, это решит вашу проблему.

wc_product_dropdown_categories() выполнит трюк вместо wp_dropdown_categories() .

Для части get_terms

путем замены

 $re_child_terms = get_terms( 'product_cat', array( 'child_of' => $child_term->term_id, 'hide_empty' => true ) ); if ( ! $re_child_terms ){ 

с

  $re_child_terms = get_term_children( $child_term->term_id, 'product_cat' ); if ( $child_term->count > 0 && empty( $re_child_terms ) ){ 

решил мою проблему.

Не уверен, но я думаю, что проблема с get_terms здесь

 // Make sure we show empty categories that have children. if ( $hierarchical && $args['hide_empty'] && is_array( $terms ) ) { foreach ( $terms as $k => $term ) { if ( ! $term->count ) { $children = get_term_children( $term->term_id, $term->taxonomy ); if ( is_array( $children ) ) { foreach ( $children as $child_id ) { $child = get_term( $child_id, $term->taxonomy ); if ( $child->count ) { continue 2; } } } // It really is empty. unset( $terms[ $k ] ); } } }