将 wordpress 自定义字段转换为单个数组

Convert wordpress custom field into single array

我正在将 wordpress 自定义字段转换为 wp 数据库中的一个数组。我能够做到,但我有重复的条目。我只需要一个。请指导我。谢谢!

在运行之前我的代码:

运行之后我的代码:

其实我想要的是:

我的代码:

add_action( 'init', function() {
    if ( 'migrate' !== filter_input( INPUT_GET, 'action' ) ) {
        return;
    }
 
    $query = new WP_Query( [
        'posts_per_page' => -1,
        'post_type'      => 'post',
        'post_status'    => 'any',
    ] );
    if ( ! $query->have_posts() ) {
        return;
    }
 
    while ( $query->have_posts() ) {
        $query->the_post();
        
        $field_id_1 = 'gallery';
        $field_value_1 = get_post_meta( get_the_ID(), $field_id_1, false );
        
        update_post_meta( get_the_ID(), $field_id_1, $field_value_1);
    }
} );

查看相关部分:

    $first=true;
    $field_id_1 = 'gallery';
    while ( $query->have_posts() ) {
        $query->the_post();
        
        $field_value_1 = get_post_meta( get_the_ID(), $field_id_1, false );

        if ($first){
            update_post_meta( get_the_ID(), $field_id_1, $field_value_1);
            $first = false;
        else delete_post_meta( get_the_ID(), $field_id_1, $field_value_1);
    }
add_action( 'init', function() {
    if ( 'migrate' !== filter_input( INPUT_GET, 'action' ) ) {
        return;
    }
 
    $query = new WP_Query( [
        'posts_per_page' => -1,
        'post_type'      => 'post',
        'post_status'    => 'any',
    ] );
    if ( ! $query->have_posts() ) {
        return;
    }
 
    while ( $query->have_posts() ) {
        $query->the_post();
        
        $field_id_1 = 'gallery';
        $field_value_1 = get_post_meta( get_the_ID(), $field_id_1, false );
        
        delete_post_meta( get_the_ID(), $field_id_1 );

        add_post_meta( get_the_ID(), $field_id_1, $field_value_1);

    }
} );

@Mulli 我是这样工作的。我决定先删除 post_meta,然后添加_post_meta,而不是更新 post_meta。感谢您的帮助!