Trim posts from WP-Query?

时间:2012-02-16 作者:leonbloy

我希望在我的首页上显示一些由以下标准确定的帖子:显示当月的所有帖子(实际上是从最近帖子对应的月份开始);但是如果这个数字少于(比如)8,那么就显示最近的8篇帖子。

假设我知道每个月都不会有超过(比如)20篇文章,我会将posts\\u per\\u page设置为20,通常抓取最近的20篇文章,然后在php中进行适当的修剪(切片)。(在SQL中这样做似乎太复杂了)

顺便说一句:起初我以为add_filter( \'posts_results\', ... ) 这很合适,但很难区分查询是与主循环相对应,还是与其他查询相对应(例如,最新的posts小部件…)。然后我将逻辑编码在主题中index.php 样板

问题是WP-query 似乎不支持-干净地-修剪立柱。。。我必须手动重新分配postscount 属性(我认为rewind() 方法应重新计算count, 但是……)

你觉得这太脏了吗?还有其他想法吗?

1 个回复
SO网友:mor7ifer

我认为,如果您当月没有8篇帖子,最好只进行第二次查询,例如:

//get current date
$date = getdate();

//setup args
$args = array(
    //basic stuff
    \'posts_per_page\' => -1,
    \'post_stutus\'    => \'publish\',
    //time parameters
    \'year\'           => $date[\'year\'],
    \'month_num\'      => $date[\'mon\']
);

//create WP_Query
$my_query = new WP_Query;

//execute first WP_Query
$posts = $my_query->query( $args );

//check first WP_Query, update if necessary
if( count( $posts ) < 8 ) {
    //update args
    unset( $args[\'year\'] );
    unset( $args[\'mon\'] );
    $args[\'posts_per_page\'] = 8;

    //do query
    $posts = $my_query->query( $args );
}

//do your loop and such
这是一些粗略的代码,我刚刚很快就完成了,但你明白了

结束

相关推荐

jQuery .load and WP function

我正在尝试获取Quick Chat WordPress plugin 仅在单击按钮时加载。我当前正在使用此代码:$(\'#chat\').load(\'path to my wp template/quick-chat.php\'); 。。。文件“快速聊天”的位置。php’有一个WordPress函数,可以调用快速聊天。然而,当文件加载时,它无法识别函数。这就像是在WordPress之外。有什么想法吗?