WordPress显示下一个3 x数字相邻自定义职位从现有的

gg58donl  于 2023-06-05  发布在  WordPress
关注(0)|答案(2)|浏览(246)

在一个单一的/详细的自定义文章页面,我想显示一个自定义导航的李的或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

问题是这只显示了第一个下一个职位,我需要显示3。

hgqdbh6s

hgqdbh6s1#

你的代码的问题是get_previous_post()获取当前post之前的post,所以你的for循环只获取相同的post 3次。
您需要使用的是wp_get_recent_posts。您可以在WordPress循环中使用它,使用二级循环来进行查询。
根据您添加代码的位置,您可能只能使用wp_get_recent_posts():

$args = array(
    'numberposts' => 3,
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post');

$recent_posts = wp_get_recent_posts( $args, ARRAY_A );
daupos2t

daupos2t2#

上面的代码非常接近。看起来你只是缺少了一个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_excerpt()时,它应该包含一个“阅读更多”的链接,所以你不需要使用the_permalink()函数。如果您没有3个或更多以前的帖子,它只会显示有多少以前的帖子。我在single.php模板文件中测试了这一点,但是如果你使用的是自定义的模板文件,它应该可以在自定义的post类型的单个模板文件中工作。如果你有任何问题请告诉我。

相关问题