经过大量的挖掘和尝试,我想我找到了一个解决方案。
它涉及我使用的自定义字段Advanced Custom Field 但它是可选的。
为了简化网站的编写,我在实际新闻之前放置了一个元数据库
现在,在我的主页中,我有5个区域:其中4个区域只包含一条新闻,第5个区域是“其他新闻”框,其中包含10条新消息。
因此,前4个框非常简单:
$recentPosts = new WP_Query();
$recentPosts->query(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Top1\',
\'showposts\' => 1
)
);
具有正确位置的元值。
主要问题是:如何将旧的“Top1”新闻推送到“其他新闻”框中,而不必手动切换自定义字段?
$top1 = get_posts(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Top1\',
\'offset\' => 1
));
$top2 = get_posts(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Top2\',
\'offset\' => 1
));
$top3 = get_posts(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Top3\',
\'offset\' => 1
));
$top4 = get_posts(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Top4\',
\'offset\' => 1
));
$other = get_posts(array(
\'meta_key\' => \'position\',
\'meta_value\' => \'Other news\'
));
$mergedposts = array_merge( $top1, $top2, $top3, $top4, $other );
$postids = array();
foreach( $mergedposts as $item ) { $postids[]=$item->ID; }
$uniqueposts = array_unique($postids);
$posts = get_posts(array(
\'post__in\' => $uniqueposts,
\'showposts\' => 3
));
foreach( $posts as $post ) :
setup_postdata($post);
也许代码可以清理一下,但它可以按照我的需要工作。我希望这是有用的。