Привет сообщество Wordpress,
Мне нужна ваша помощь.
У меня есть сайт магазина Woocommerce с несколькими авторами. На боковой панели я хочу отобразить список категорий продуктов woocommerce по авторам (на основе сообщений, сделанных автором), сопровождаемый счетчиком сообщений о продукте. Я использую следующий код от 2famousTV, который отлично работает для получения категорий по автору и счетчику. Я изменил его, чтобы отображались только родительские категории.
<?php
global $post, $wpdb;
// This will get us a list of the categories that our Author has published in
$author = get_query_var('author');
$categories = $wpdb->get_results("
SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug, tax.description
FROM $wpdb->posts as posts
LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID
LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id
WHERE posts.post_status = 'publish' AND
posts.post_author = '$author' AND
tax.taxonomy = 'product_cat'
ORDER BY terms.name ASC
");
// This loop picks up categories
foreach($categories as $category) :
$catid = $category->ID;
// Now, inside the loop, we need to count how many posts that the Author has published.
$counter = "SELECT COUNT(*)
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.term_id = $catid
AND $wpdb->term_taxonomy.taxonomy = 'product_cat'
// modification
AND tax.parent = '0'
// modification end
AND $wpdb->posts.post_status = 'publish'
AND post_author = '$author'
";
$user_count = $wpdb->get_var($counter);
echo '<div class="archive_author">' . $category->name . '<br/><span class="subcounter">' . $user_count . ' posts</span></div>';
endforeach;
?>
Источник: Ссылка на оригинальный пост 2famous-tv
Мой вопрос:
С этим кодом счетчик родительской категории подсчитывает только элементы в родительской категории, но не элементы в дочерних категориях. Как я могу заставить счетчик родительской категории включать сообщения дочерней категории, фактически не назначая сообщения родительской категории?
Category_______________Counter_____________Posts
Parent-Category___________0__________________0
-Child-Category A_________2__________________2
-Child-Category B________Category________________Counter____________Posts
Parent-Category___________5__________________0
-Child-Category A_________2__________________2
-Child-Category B_________3__________________3
_________________3
должно быть:
Category________________Counter____________Posts
Parent-Category___________5__________________0
-Child-Category A_________2__________________2
-Child-Category B_________3__________________3
Я попробовал это с несколькими унаследованными параметрами Wordpress, такими как «wp_list_categories», «get_terms» и «get_the_term», но не принес результатов. Кажется, единственный способ пройти через Mysql. Я недостаточно тверд, чтобы это произошло. Любая помощь будет оценена!