Wordpress显示现有站点的下一个3倍数量的相邻自定义帖子

Wordpress显示现有站点的下一个3倍数量的相邻自定义帖子,wordpress,navigation,show,custom-post-type,next,Wordpress,Navigation,Show,Custom Post Type,Next,在一个单独的/详细的自定义帖子页面上,我想在侧边栏中显示一个自定义的li或Div导航,该侧边栏显示自定义帖子系列中接下来3篇帖子的标题、摘录和永久链接。因此,如果我们在自定义帖子3上,那么它将在侧边栏中显示4、5、6 我发现最接近这一点的是:-= global $post; $current_post = $post; // remember the current post for($i = 1; $i <= 3; $i++){ $post = get_previous_post()

在一个单独的/详细的自定义帖子页面上,我想在侧边栏中显示一个自定义的li或Div导航,该侧边栏显示自定义帖子系列中接下来3篇帖子的标题、摘录和永久链接。因此,如果我们在自定义帖子3上,那么它将在侧边栏中显示4、5、6

我发现最接近这一点的是:-=

global $post;
$current_post = $post; // remember the current post

for($i = 1; $i <= 3; $i++){
 $post = get_previous_post(); // this uses $post->ID
setup_postdata($post);

// do your stuff here       
the_title();

}

$post = $current_post; // restore
global$post;
$current_post=$post;//还记得现在的帖子吗
对于($i=1;$i ID)
设置_postdata($post);
//在这里做你的事
_title();
}
$post=$current\u post;//还原
问题是这只显示了下一篇文章的第一部分,我需要显示第三部分

谢谢
Glennyboy

代码的问题是get_previous_post()将post放在当前post的前面,因此for循环只会获得相同的post 3次

您需要使用的是。您可以在WordPress循环中使用它,使用

根据添加代码的位置,您可能只需要使用wp_get_recent_posts():


上面的代码非常接近。看起来您只是缺少了一个
endfor;
,可能还有一点html。请尝试以下代码:

<ul>
    <?php
        global $post;
        $current_post = $post;

        for($i = 1; $i <= 3; $i++):
        $post = get_previous_post();
        setup_postdata($post);

        echo '<li>';
        echo '<h3>' . get_the_title() . '</h3>';
        the_excerpt();
        echo get_post_meta($post->ID, 'your_metafield_name', true);
        echo '</li>';

        endfor;
        $post = $current_post; 

    ?>
</ul>

当使用
the_extract()
时,它应该已经包含一个指向文章的“阅读更多”链接,因此您不需要使用
the_permalink()
函数。如果您没有3篇或更多以前的文章,它只会显示以前的文章有多少篇。我在single.php模板文件中测试了这一点,但是如果您使用自定义的文章类型,它应该在自定义的文章类型单模板文件中工作。如果您有任何问题,请告诉我。

您能否提供一个示例,说明如何实现上面的?或者更好的方法?这确实有效。我现在发现的问题是,这不是一个Wordpress查询/循环,我无法输出我的自定义字段。是否有任何方法更新上面的内容,使其成为Wordpress查询?如前所述,这确实有效,Andy和我也解决了自定义字段的问题。如果可以实现的话作为一个Wordpress自定义查询进行ved是非常有趣的,但目前这是我看到它实际按照要求工作的唯一方式。谢谢,你可以使用
echo get_post_meta($post->ID,'your_metafield_name',true)
来呈现自定义元域。我将编辑上面的答案。只需将
“你的元域”
更改为你想要呈现的元域的名称。我已经测试过,它正在工作。Andy我如何扩展上面的内容来自动创建一个链接,该链接返回到自定义帖子名称(包括主题slug)的自定义帖子存档页面.我已对上述内容进行了修改,以便在最后一个项目(而不是3个空白框)后显示新的li,该项目应链接回主自定义帖子页面/存档。
<ul>
    <?php
        global $post;
        $current_post = $post;

        for($i = 1; $i <= 3; $i++):
        $post = get_previous_post();
        setup_postdata($post);

        echo '<li>';
        echo '<h3>' . get_the_title() . '</h3>';
        the_excerpt();
        echo get_post_meta($post->ID, 'your_metafield_name', true);
        echo '</li>';

        endfor;
        $post = $current_post; 

    ?>
</ul>