我正在浏览Wordpress帖子,但我需要使用接收顺序的数据。我在查询4个帖子。我需要他们返回的订单:1,4,2,3,按日期排序。我将使下面的示例尽可能简单:
$the_query = new WP_Query( 'cat='.$cat.'&posts_per_page=4&orderby=date' );
foreach ($posts as $post) {
echo '<a href="'.get_the_permalink().'" title="'.get_the_title().'" rel="bookmark">'.get_the_title().'</a><br /><br />'; // The actual content is more complicated- keeping it simple for this example
} // end foreach
现在,我需要做些什么来回应故障中的帖子? (1,4,2,3)
答案 0 :(得分:0)
我有个主意:
$the_query = new WP_Query( 'cat='.$cat.'&posts_per_page=4&orderby=date' );
$ordered_posts = array();
foreach ($posts as $post)
$ordered_posts[] = '<a href="'.get_the_permalink().'" title="'.get_the_title().'" rel="bookmark">'.get_the_title().'</a><br /><br />';
$order = array(1, 4, 3, 2);
$size = count($order);
for ($i = 0; $i < $size; $i++)
echo $ordered_posts[$order[$i] - 1];
首先按顺序存储所有帖子,然后使用数组映射序列,您可以按修改的顺序输出它们。
答案 1 :(得分:0)
这应该有效:
<?php
$posts = array();
$the_query = new WP_Query( 'cat='.$cat.'&posts_per_page=4&orderby=date' );
$myposts = get_posts( $the_query);
foreach ( $myposts as $post )
{
$posts[] += $post->ID;
}
echo '<a href="'.get_the_permalink($posts[0]).'" title="'.get_the_title($posts[0]).'" rel="bookmark">'.get_the_title($posts[0]).'</a><br /><br />';
echo '<a href="'.get_the_permalink($posts[4]).'" title="'.get_the_title($posts[4]).'" rel="bookmark">'.get_the_title($posts[4]).'</a><br /><br />';
echo '<a href="'.get_the_permalink($posts[1]).'" title="'.get_the_title($posts[1]).'" rel="bookmark">'.get_the_title($posts[1]).'</a><br /><br />';
echo '<a href="'.get_the_permalink($posts[2]).'" title="'.get_the_title($posts[2]).'" rel="bookmark">'.get_the_title($posts[2]).'</a><br /><br />';
?>
答案 2 :(得分:0)
您可以尝试以下操作,它只会根据您在$posts
数组中指定的顺序对$order
数组进行排序:
$the_query = new WP_Query( 'cat='.$cat.'&posts_per_page=4&orderby=date' );
$posts = get_posts($the_query);
$order = array(1, 4, 2, 3);
usort($posts, function ($a, $b) use ($posts, $order) {
$a_key = array_search($a, $posts);
$b_key = array_search($b, $posts);
$a_order = array_search($a_key + 1, $order);
$b_order = array_search($b_key + 1, $order);
return $a_order - $b_order;
});
foreach ($posts as $post) {
//do stuff
}
如果您想保留其索引,请使用uasort
代替usort
。
答案 3 :(得分:0)
对于非程序方式,请使用Simple Custom Post Order。基本上它允许您拖放WP后端中的帖子。很简单,没有设置。