创建WP_QUERY以按类别或父/子类别搜索帖子

时间:2016-02-09 作者:Kanga

您好,如果以前有人问过这个问题,我真的很抱歉,但我找不到我需要的确切解决方案。所以我想在我的Wordpress页面中创建一个搜索。每当用户提交表单时,我都想创建一个查询,按其类别或其父/子类别搜索帖子。下面是一个示例:

Example

因此,在MYSQL中,它看起来像这样,但我不知道如何在Wordpress中借助WP\\U Query来完成它,因为我是新手。

SELECT * FROM posts 
WHERE posts.category 
LIKE \'%John Doe%\' OR posts.sub_category LIKE \'%John Doe%\'
我还没有弄清楚表是如何连接的,所以这里可能需要进行一些连接操作,但我希望有人理解我的要求。

任何帮助都将不胜感激。提前感谢!

2 个回复
最合适的回答,由SO网友:majick 整理而成

使用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 ...

}

SO网友:Charles Jaimet

使用此选项:

$query = new WP_Query( array( \'cat\' => 4 ) );
其中4是顶级类别(Blackburn)的ID。此查询将包括子类别。

参考-WP_Query