WordPress类别搜索的问题

时间:2016-11-28 作者:MidouCloud

我在我的wordpress网站上进行了多次自定义搜索,以使用类别搜索查找帖子。像这样:

    <select id="category-select" name="category-select">
       <option value="6">Todo</option>
       <option value="7">Spain</option>
       <option value="8">Europe</option>
       <option value="30">Rest of the World</option>
      </select>
<input type="text" id="autoc-input" name="autoc-input" autocomplete="off" placeholder="">
我的表单正确发送了所有参数,例如,如果我在巴塞罗那搜索西班牙类别,我会得到以下url:

?s=巴塞罗那;cat=7

我无法从此查询中获得任何结果,但如果我只搜索我的输入或类别。通过这篇文章,我在搜索页面上获得了该类别的所有帖子:

?s=cat=7

这是所有包含巴塞罗那的帖子。

?s=巴塞罗那

我找不到问题,无法获得多个参数的结果。我怎样才能解决这个问题?

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

Wordpress搜索非常不完整,无法很好地进行后期搜索。我通过编辑搜索找到答案。php在我的模板文件的顶部。

$s = $_GET[\'s\'];
$cat = $_GET[\'cat\'];
$custom_query_args = array(
                        \'s\' => $s,
                        \'cat\' => $cat,
                        \'posts_per_page\'   => 11,
                        \'order\'            => \'DESC\',
                        \'post_type\'        => \'post\',
                        \'post_status\'      => \'publish\'
                    );

// Get current page and append to custom query parameters array
$custom_query_args[\'paged\'] = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;

// Instantiate custom query
$custom_query = new WP_Query( $custom_query_args );

// Pagination fix
$temp_query = $wp_query;
$wp_query   = NULL;
$wp_query   = $custom_query;
像这样,我得到了所选类别的所有结果。

SO网友:GKS

您可以通过使用修改查询来搜索帖子pre_get_post 滤器将此代码添加到functions.php 文件

add_filter(\'pre_get_posts\', \'search_by_category\');
function search_by_category($wp_query)
{
    if (isset($_GET[\'cat\']) && !is_admin()) {
        $wp_query->set(\'category__in\', array($_GET[\'cat\']));
    }
}
在使用任何查询变量之前,必须使用add\\u query\\u var注册/添加。

function add_category_query_string() {

    global $wp;
    $wp->add_query_var(\'cat\');

}

add_filter(\'init\', \'add_category_query_string\');
如果对你有用,请告诉我。

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the