Создайте WP_Query для поиска сообщений по их категориям или их родительским / дочерним категориям

Привет, мне очень жаль, если это было задано раньше, но я не смог найти точное решение, в котором я нуждаюсь. Итак, вот проблема, которую я хочу создать для поиска на моей странице WordPress. Всякий раз, когда пользователь отправляет форму, я хочу создать запрос для поиска сообщений по их категориям или их родителям / дочерним категориям. Вот пример:

пример

Поэтому в MYSQL это выглядело бы примерно так, но я не знаю, как это сделать в WordPress с помощью WP_Query, так как я новичок в этом.

SELECT * FROM posts WHERE posts.category LIKE '%John Doe%' OR posts.sub_category LIKE '%John Doe%' 

Я не понял, как связаны таблицы, поэтому, возможно, здесь нужно сделать несколько операций JOIN, но я надеюсь, что кто-то поймет, что я прошу.

Любая помощь будет оценена по достоинству. Заранее спасибо!

Solutions Collecting From Web of "Создайте WP_Query для поиска сообщений по их категориям или их родительским / дочерним категориям"

get_categories используйте get_categories чтобы получить все категории сообщений, которые будут использоваться в форме, а затем прокрутите их, чтобы отобразить многоэкранный ввод …

 function hierarchical_category_inputs ($cat, $indent) { $cats = get_categories('hide_empty=false&orderby=name&order=ASC&parent='.$cat); $indent++; if ($cats) { foreach ($cats as $cat) { echo "<input type='checkbox' name='cat-".$cat->term_id."'"; echo " style='margin-left: ".($indent*10)."px;'> ".$cat->name."<br>"; hierarchical_category_inputs($cat->term_id, $indent); } } } echo "<form method='post'>"; // 0 for all categories, -1 so first indent is 0 hierarchical_category_inputs(0,-1); echo "<input type='hidden' name='custom_catsearch' value='yes'>"; echo "<input type='submit' value='Search'>"; echo "</form>"; 

Затем в части поиска вы собрали массив отмеченных категорий, чтобы перейти к WP_Query :

 function custom_catsearch_output() { $cats = array(); foreach ($_POST as $key => $value) { // make sure the post key starts with cat- if (substr($key,0,4) == 'cat-') { // check for check of the checkbox if ($value == '1') { // get the cat id from after cat- $cats[] = substr($key,4,strlen($key)); } } } $query = new WP_Query(array('cat' => $cats)); print_r($query); // ... do something different with the results ... } 

Использовать это:

 $query = new WP_Query( array( 'cat' => 4 ) ); 

Где 4 – идентификатор категории верхнего уровня (Блэкберн). Этот запрос будет содержать субаты.

Ссылка – WP_Query