WedX - журнал о программировании и компьютерных науках

Подсчет сообщений дочерней категории в родительской категории

Привет сообщество 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. Я недостаточно тверд, чтобы это произошло. Любая помощь будет оценена!


  • Обратите внимание, что DISTINCT НЕ является функцией. Помимо этого, если хотите, рассмотрите следующий простой двухэтапный план действий: 1. Если вы еще этого не сделали, предоставьте правильные DDL (и/или sqlfiddle), чтобы нам было легче воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, предоставленной на шаге 1. 28.05.2015
  • Спасибо Клубничка. На самом деле я не знаю, как предоставить вам DDL или sqlfiddle. Будет полезно, если я пришлю вам ссылку на тестовый сайт? 28.05.2015
  • Не совсем. Меня действительно интересует только сторона проблемы SQL - набор данных и желаемый набор результатов. На вашем месте я бы понял, как работает sqlfiddle. 28.05.2015
  • Ok. Я дам вам знать, когда понял, как использовать sqlfiddle. Спасибо за быстрый ответ. 28.05.2015

Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]