使用单个meta_id作为数组

时间:2016-09-03 17:04:14

标签: mysql arrays ajax wordpress

我目前正在更改滑块上的用户IP并将其发送到WP DB,但我希望保持较小的数据库并为IP列表设置一个meta_id。

我当前的代码有点工作但是因为它将新的ip添加到现有的数组中,导致它变成多维的并打破它。

这是我的代码。

$user_ip = $_POST['ip'];
    $user_score = $_POST['sliderValue'];
    $postID =  $_POST['post_id'];

    $currentIPs =  maybe_unserialize(get_post_meta( $postID, 'user_ip'));

    $currentIPs[] = $user_ip;


    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {

              update_post_meta($postID, 'user_ip', $currentIPs);

            echo var_dump($currentIPs);


    }
   die();
}

我尝试使用add_post_meta并且工作正常,但它会为每个IP创建一个新的meta_id,这会使数据库变得庞大。为了节省性能和节省空间,我只是一个键和所有值的ID。

1 个答案:

答案 0 :(得分:1)

每次使用update_meta_data时,该函数都被编程为创建一个新的meta_id。 但是,解决方法是通过使用逗号分隔IPS,可以将IPS存储在相同的meta_id中。

替换

 $currentIPs   =  maybe_unserialize(get_post_meta( $postID, 'user_ip'));
 $currentIPs[] = $user_ip;
 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
 update_post_meta($postID, 'user_ip', $currentIPs);

$currentIPs = $user_ip;
$userIp = get_post_meta($postID, 'user_ip',true);
 if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
if (empty($userIp)) {
   update_post_meta($postID, 'user_ip', $currentIPs);
} else {
   $newvalue = $currentIPs .','. $userIp;
   update_post_meta($postID, 'user_ip', $newvalue);
}

稍后如果您想在数组中使用这些数据,那么之后可以使用php的explode()函数