Intereting Posts

Категория «pad_counts» и «родительский» конфликт

Ниже находится текущий цикл, который у меня установлен:

<?php //start products category loop $args = array( 'hide_empty' => 0, 'parent' => 0, 'orderby' => 'name', 'order' => 'ASC', 'taxonomy' => 'profile_categories', 'pad_counts' => 1 ); $categories = get_categories($args); foreach($categories as $category) { ?> <?php // setup the category ID $cat_id = $category->term_id; // Get category name $cat_name = $category->name; // Get category count $cat_count = $category->count; //get the category url $cat_url = get_term_link( $category->slug, 'profile_categories' ); echo "<h2>"; echo $cat_name; $subcat_args = array( 'hide_empty' => 0, 'orderby' => 'name', 'child_of' => $cat_id, 'order' => 'ASC', 'taxonomy' => 'profile_categories', 'pad_counts' => 1 ); $subcategories = get_categories($subcat_args); $subcat_count = count($subcategories); if ($subcat_count > 0) { echo ' ('.$subcat_count.' Subcategories)'; } echo "</h2>"; echo '<a href="'; echo $cat_url; echo '">'; echo __('View all','roots'); echo "</a>"; // Get posts belonging to current category $post_args = array( 'posts_per_page' => 4, 'post_type' => 'moulding_profiles', 'tax_query' => array( array( 'taxonomy' => 'profile_categories', 'field' => 'id', 'parent' => 0, 'terms' => $cat_id ) ) ); $posts_query = new WP_Query($post_args); if ($posts_query->have_posts() ) { echo '<ul>'; while ($posts_query->have_posts()) : $posts_query->the_post(); ?> <li><a href="<?php the_permalink();?>"><?php the_title(); ?></a> -> Width: <?php the_field('mp_profile_dimensions_width',get_the_ID()); ?> Height: <?php the_field('mp_profile_dimensions_height',get_the_ID()); ?></li> <?php endwhile; echo '</ul>'; } // done our wordpress loop. Will start again for each category wp_reset_query(); // reset the query ?> <?php } // done the foreach statement ?> 

То, что это делает, – это категории списка в таксономии, называемой profile_categories , и затем перечисляет 4 элемента, которые входят в каждую категорию. Аргумент категории использует parent => 0 так что отображаются только категории верхнего уровня. Я хотел бы также использовать pad_counts => 1 чтобы захватить счетчик не только категории, но и всех подкатегорий внутри этого. Итак – если я думаю об этом правильно, parents конфликтуют с pad_counts . Я просмотрел кодекс об этом и застрял в грязи, если это даже возможно – или если я это невежественный и упустил что-то очевидное. Любая помощь будет принята с благодарностью. Благодаря!

Обновление : используя http://codex.wordpress.org/Function_Reference/get_categories в качестве ссылки, когда parent элемент установлен в 0 (только для отображения категорий верхнего уровня), $category->count и $category->category_count не включите подсчет подкатегорий – все еще думая, что это ошибка, если кто-то не знает об обходном пути.

Solutions Collecting From Web of "Категория «pad_counts» и «родительский» конфликт"

Это потенциально ошибка *, но это не похоже на то, с которым вы связаны. Проблема заключается в функции get_terms . В частности, здесь: http://core.trac.wordpress.org/browser/trunk/wp-includes/taxonomy.php#L1397

Массив терминов (которые, когда parent=0 , являются только терминами верхнего уровня), передается в _pad_term_counts который гласит:

Добавьте количество детей в подсчет родителей.

Пересчитывает количество сроков, включая элементы из детских терминов. Предполагается, что все соответствующие дети уже находятся в аргументе $ terms

Таким _pad_term_counts функция _pad_term_counts выполняет свою работу должным образом, но ее только когда-либо задают условия верхнего уровня и поэтому учитывает только сообщения в этих терминах, а не любые дочерние термины.

Обход (это не особенно эффективно) заключается в том, чтобы получить все категории, а затем отфильтровать все, кроме верхнего уровня. Тогда есть далеко, как get_categories (и поэтому get_terms ) – вы все- get_terms терминами, и поэтому все подсчитываются:

  //The args. Don't set parent $args = array( 'hide_empty' => 0, 'orderby' => 'name', 'order' => 'ASC', 'taxonomy' => 'category', 'pad_counts' => 1 ); //I'll leave it to you to check for error objects etc. $categories = get_categories($args)); $categories = wp_list_filter($categories,array('parent'=>0)); 

* Или, может быть, нет: он просто исключает количество терминов, которые не соответствуют критериям.