在多个位置插入/粘贴多个帖子

时间:2014-03-17 作者:certainstrings

我正在尝试this 但有多个职位和具体职位。帖子的位置现在是硬编码的,但将从post meta中提取出来。这段代码只在主页上运行,帖子没有分页。

$essay_args = array(
    \'posts_per_page\' => get_option(\'posts_per_page\'),
    \'post__not_in\' => array($post->ID),
    \'post_type\' => array(\'post\')
);
$essays = get_posts( $essay_args );

$fixed_posts = get_posts(array(\'post_type\'=>array(\'ad\',\'book\')));

$positions = array(2,5,10); // to be pulled in from ad/book posts
$x = 0;

foreach($fixed_posts as $fixed_post) : setup_postdata($post);
    $e_posts = new WP_Query(array(\'p\'=>$fixed_post->ID,\'post_type\'=>array(\'ad\',\'book\')));
    if (!empty($e_posts->posts)) array_splice($essays,$positions[$x],0,$e_posts->posts);
    $x++;
 endforeach;

 foreach($essays as $essay) : setup_postdata($post);
    echo $essay->post_title . \'<br>\';
 endforeach;
对每个帖子按id执行多个WP\\u Query/get\\u posts请求更有意义吗?还是这会对数据库造成太大的负担?有没有更干净的方法?

1 个回复
SO网友:user49163

您可以尝试重建一个包含两个查询的数组,或者将fixed\\u帖子拼接到随笔数组中。也许是下面这样。

$essay = get_posts();
$fixed_posts = get_posts();
$post_positions = array(2,5,10);
$x = 0;

foreach ($essays as $i => $essay) {
    if ($post_positions[$x] == $i) {
        $top_posts[] = $fixed_posts[$x];
        $x++;
    }

    $top_posts[] = $essay;
}

// Alternatively
foreach ($fixed_posts as $i => $fixed_post) {
    array_splice($essays, $post_positions[$i], 0, $fixed_post);
}

结束

相关推荐

Multiple loops in Genesis

所以我想在我的主页上创建两个循环。一个可以显示页面自身内容的页面,然后在其正下方有一个网格循环,用于从“新闻”类别中获取两篇最新帖子。我真的找不到一种方法来做这件事,所以我四处黑客攻击,直到我让它工作起来,但我不确定这是正确的做法,有人能告诉我我可以/应该对这段代码做些什么改进吗?以下是我的截图:http://s18.postimg.org/knrq6sert/2013_11_13_22_55_58.png主题:MetroTemplate:主页。php//* Add support for Genesis