如何在wp post meta中为数组添加键值对?

时间:2016-01-01 13:50:57

标签: php arrays wordpress associative-array

我正在为我的网站制作评级系统,我想将用户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
)

或者它是一种更好的方法来创建一个单独的表并在那里存储评级?

1 个答案:

答案 0 :(得分:0)

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

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

这似乎不符合逻辑,但请参阅this discussion。我测试过这适用于WP 4.4。