Wordpress - 如何获得下一个3个帖子

时间:2016-11-23 12:23:58

标签: wordpress

我有一个自定义帖子'works',我使用一个插件,客户端可以重新订购它。

我能够通过menu_order获得下一篇文章,但是我在接下来的三篇文章中遇到了很多麻烦。

例如,

0 1 2 3 4 5

我还需要它循环,如果它是在结束,所以如果我在第4后,我需要得到5,0,1。

有人会有任何想法吗?

我是PHP的新手,我试图找到一种混乱的方法,但它无法正常工作。

$counter = 0;
$theID = $post->ID;

for ($i=0; $i < 3; $i++) { 

    if ($nextID !== 0) {

        $id = get_post_field('menu_order', $nextID, true);
        $args = array(
            'posts_per_page'   => -1,       
            'menu_order'       => $id,
            'post_type'        => 'work',
            'post_status'      => 'publish'
        );
        $posts_array[] = get_posts( $args );        
    } else {

        $args = array(
            'posts_per_page'   => -1,       
            'menu_order'       => $counter,
            'post_type'        => 'work',
            'post_status'      => 'publish'
        );
        $posts_array[] = get_posts( $args ); 
        $counter++;
    }
}

echo json_encode($posts_array);

1 个答案:

答案 0 :(得分:0)

你有几个问题:  1. $ nextID在初始化之前使用(或未复制)  2. get_post_field()使用post的id作为param。请看这个链接:https://codex.wordpress.org/Function_Reference/get_post_field

我会发帖子,增加$ counter而不是,如果它超过帖子数量($ postCount),将其设置为0所以,如果$ counter == 5和$ totalCount == 6,就像在你的例子中一样,将获得5并转到0。

global $post;

$theID = $post->ID;
$counter = get_post_field('menu_order', $theID);
$postsCount = wp_count_posts('work');
$posts_array = [];

for ($i=0; $i < 3; $i++) { 
    if($counter+1 >= $postCounts)
        $counter = 0;

    $args = array(
        'posts_per_page'   => -1,       
        'menu_order'       => $counter,
        'post_type'        => 'work',
        'post_status'      => 'publish'
    );
    array_push($posts_array,get_posts( $args )); 

    $counter++;
}

echo json_encode($posts_array);

我还没有测试过,但我希望它有所帮助。