如何在wp-post-meta中向数组添加键值对


How to add key value pairs to an array in wp post meta?

我正在为我的网站创建一个评级系统,我想将用户id和评级值作为键值对存储在存储为post-meta的数组中。

我的问题是,我编写的代码获取以前存储的数组,将其推送到子数组,然后添加我的新键值对。然后,当下一个评级到来时,整个数组再次变成一个子数组,并添加新的键值对。

    // Get post meta
    $star_ratings = get_post_meta( $post_id, 'star_ratings', false );
    $star_rating_key = get_current_user_id();
    $star_rating_value = $rating;
    $star_ratings[$star_rating_key] = $star_rating_value;
    // Debug
    debug_to_console( print_r($star_ratings ) );
    // If we fail to update the post meta, respond with -1; otherwise, respond with 1.
    echo false == update_post_meta( $post_id, 'star_ratings', $star_ratings ) ? "-1" : "1";

以下是我从调试中得到的第一个评级:

Array
(
    [1] => 5
)

以下是第二次评级后的情况:

Array
(
    [0] => Array
        (
            [1] => 5
        )
    [19] => 3
)

我做错了什么?我该怎么做?我想把它作为:

Array (
[1] => 5,
[19] => 3
)

还是只创建一个单独的表并将评分存储在那里是更好的方法?

您只需要将get_post_meta()的第三个参数更改为true:

$star_ratings = get_post_meta( $post_id, 'star_ratings', true );

这似乎不符合逻辑,但请看下面的讨论。我在WP 4.4中测试了这一点。