首页 文章

在Wordpress搜索过滤器中未返回帖子

提问于
浏览
0

我正在编写一个Wordpress查询来过滤搜索结果 .

我想使用模板 logged_in_mentor_only_template.phplogged_in_only_template.php (以及两个受限制的类别)删除结果 .

此查询有效但仍会停止返回的任何帖子 . 非常奇怪,页面被退回但帖子不是 . (我还没有添加类别过滤,因为我没有要过滤的帖子!)

我已经尝试添加post_type过滤器,其中列出的帖子和页面但仍然没有 .

任何帮助赞赏 .

query_posts(array_merge($wp_the_query->query, array(
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'logged_in_mentor_only_template.php',
            'compare' => '!='
        ),
        array(
            'key' => '_wp_page_template',
            'value' => 'logged_in_only_template.php',
            'compare' => '!='
        )
    )
)));

1 回答

  • 0

    您搜索 _wp_page_template 帖子将不会有任何 _wp_page_template .
    所以它只会获取页面 . 因为它只返回设置了 _wp_page_template 的帖子/页面 . 因此,您需要检查不存在的元键 .

    在WP 3.5中,将添加compare值'NOT EXISTS' .

    直到3.5我会建议以下工作 . 不要添加这些元查询值 . 但是在循环中检查它们:

    while (the_posts()): the_post();
        if (get_post_meta(GET_THE_ID(), '_wp_page_template', true) == 'logged_in_mentor_only_template.php' || get_post_meta(GET_THE_ID(), '_wp_page_template', true) == 'logged_in_mentor_only_template.php')
            continue; // skipp the rest of this round
        //Do the rest of your loop
    endwhile;
    

    第二种选择是获取 do 拥有模板的所有帖子 .
    从此查询中获取所有ID .
    然后执行一个新的wp_query,其中排除先前获取的查询的ID .

    best option
    这些解决方案对性能不利 .
    最好的选择是等待几周的WP 3.5,它应该在12月的某个地方发布 .

相关问题