寻找从查询筛选器中排除FrontPage和NAV菜单的方法

时间:2013-09-12 作者:sosukeinu

也许我的想法是错误的,但我需要:A)根据与meta\\u值的比较,排除网站范围内查询中的帖子(减去frontpage和navbar),b)按不同的meta\\u值,然后按标题排序

这项工作:

function my_get_posts( $query ) {
    $today = current_time( \'timestamp\', 0 );
    if ( ! is_admin() && ! is_home() && ! $query->is_page(\'Locations\')) {
        $query->set( \'meta_key\', \'wpcf-post-weight\' );
        $query->set( \'orderby\', \'meta_value_num title\' );
        $query->set( \'order\', \'ASC\' );

        $meta_query = array(
            array(
                \'key\' => \'wpcf-news-expire-date\',
                \'value\' => $today,
                \'compare\' => \'>=\'
            )
        );

        $query->set( \'meta_query\', $meta_query );
    }

    return $query;
}
add_filter( \'pre_get_posts\', \'my_get_posts\' );
但是,自从pre_get_posts 无法使用is_front_page() 作为一个条件,我对如何排除头版有点困惑。将挂钩更改为parse_query, 然后使用is_front_page() 要走的路是什么?

此外,我注意到调用此函数的页面不再具有由外观>菜单生成的导航菜单。我只能假设这是因为菜单是通过查询生成的。我不知道如何特别排除nav查询。

EDIT: 刚刚注意到这似乎适用于每个页面,但frontpage排除了导航菜单$query->query_vars[\'post_type\'] != \'nav_menu_item\' 是否有任何原因表明该函数可以访问除首页以外的每个页面上传递给WP\\U查询的query\\u vars?只有frontpage引发此错误:

<b>Notice</b>:  Undefined property: WP_Query::$post in <b>...wp-includes/query.php</b> on line <b>3034</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3402</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3404</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3406</b><br />
<br />
<b>Notice</b>:  Undefined property: WP_Query::$post in <b>...wp-includes/query.php</b> on line <b>3034</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3402</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3404</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>...wp-includes/query.php</b> on line <b>3406</b><br />
<br />
<b>Notice</b>:  Undefined index: post_type in <b>...lib/custom.php</b> on line <b>1051</b>
最后,。。。悲哀地is_main_query() 就是不行。(我们发现自己遇到了一些棘手的情况,需要进行一些辅助查询。)

任何帮助或想法都将不胜感激。非常感谢。

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

刚刚发现这可以排除frontpage!$query->get( \'page_id\' ) == get_option( \'page_on_front\' ) 幸亏this

看起来有点像“黑客”,但它很管用。

排除导航菜单查询的步骤$query->query_vars[\'post_type\'] != \'nav_menu_item\'

谢谢大家的帮助。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post