Wordpress previous_post_link() 和 next_post_link() 不适用于 CPT

Wordpress previous_post_link() and next_post_link() don't work at CPT

各位!

Wordpress 的 CPT 和 ACF 有问题。

我的 CPT“投资组合”post 中有 ACF 字段('previouspost' 和 'nextpost)。我需要每个 post 来获取指向 ACF 字段的上一个和下一个 post 链接。我使用的代码没有任何作用,字段为空,没有错误和警告

function update_portolio_metadata(){

    $args = array(
        'post_type' => 'portfolio', // Only get the posts
        'post_status' => 'publish', // Only the posts that are published
        'posts_per_page'   => -1 // Get every post
    );
    $posts = get_posts($args);
    foreach ( $posts as $post ) {
            $previouslink = previous_post_link();
            $nextlink = next_post_link();


    update_post_meta( $post->ID, 'previouspost', $previouslink);
    update_post_meta( $post->ID, 'nextpost', $nextlink);


    }
}
add_action('init','update_portolio_metadata');

更新、检查和工作

function update_portolio_metadata(){
    $args = array(
            'post_type' => 'portfolio', // Only get the posts
            'post_status' => 'publish', // Only the posts that are published
            'posts_per_page'   => -1 // Get every post
    );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
        $previouslink = get_permalink(get_adjacent_post(false,'',false));
        $nextlink = get_permalink(get_adjacent_post(false,'',true));
            
        update_post_meta( get_the_ID(), 'previouspost', $previouslink);
        update_post_meta( get_the_ID(), 'nextpost', $nextlink);
    endwhile;
}


add_action('init','update_portolio_metadata');

有些函数只能在循环中工作。您可以使用 wp_query 而不是 get_posts。

你的代码应该是这样的:

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
    $previouslink = get_previous_post_link();
    $nextlink = get_next_post_link();

    update_post_meta( get_the_ID(), 'previouspost', $previouslink);
    update_post_meta( get_the_ID(), 'nextpost', $nextlink);
endwhile;
}