如何不按顺序循环播放帖子?

时间:2014-07-29 22:42:10

标签: php wordpress

我正在浏览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)

4 个答案:

答案 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后端中的帖子。很简单,没有设置。