我目前正在更改滑块上的用户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。
答案 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()
函数