如何修改查询以按Slug排除帖子?

时间:2012-07-25 作者:webmasters

如何修改查询以按slug排除某些帖子?有可能吗?

query_posts(array(\'category_name\' => \'Mycat\', \'posts_per_page\' => -1));

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

您可以使用url_to_postid() 功能:

$ID = url_to_postid(slug);
然后只需从查询中排除ID:

query_posts(array(\'category_name\' => \'Mycat\', \'posts_per_page\' => -1, \'post__not_in\' => $ID ));
如果需要排除多个页面,可以创建帖子ID数组。

SO网友:Chip Bennett

Do not use query_posts()!. 滤器pre_get_posts 相反*。

<?php
function wpse59617_filter_pre_get_posts( $query ) {
    // Only modify the main query
    if ( ! $query->is_main_query() ) { return $query; }
    // Get the ID of the post to exclude
    $slug = \'some-post-slug\';
    $post_id = url_to_postid( $slug );
    // Modify the query
    $query->set( \'category_name\', \'Mycat\' );
    $query->set( \'post__not_in\', $post_id );
    $query->set( \'posts_per_page\', \'-1\' );
    // Return the modified query
    return $query;    
}
add_filter( \'pre_get_posts\', \'wpse59617_filter_pre_get_posts\' );
?>
*不,真的:不要使用query_posts(). Here\'s why.

结束

相关推荐

_ategory()在wp_Query循环中不起作用

我正在使用自定义帖子类型。我想在wp\\U查询循环中显示每个帖子在归档页面上的最子类别。但是\\u类别(“”);不起作用。我该怎么办?我需要你的帮助。对不起,我的英语不好。提前谢谢。我的代码:存档fotograf。php<?php /** * Displays the Pagination in Custom loop * */ ?> <?php get_header(); ?> <?php $aranan= $