2016-09-03 3 views
0

現在、スライダの変更でユーザーIPを取得してWP DBに送信していますが、DBを小さく保ち、IPリスト。既存のmeta_valueに1つのmeta_idを配列として持つユーザーipを追加する

私の現在のコードは動作していますが、既存の配列に新しい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

その後、PHPのexplode()機能を使用することができます

$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); } 

その後

$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); 

を交換してくださいメタフィルド?同じIDで? –

+0

こんにちは、 私は同じIDを持つ単一のmeta_fieldにIDを格納したいと思います。 – Kyon147

答えて

1

この関数は、update_meta_dataを使用するたびに新しいmeta_idを作成するようにプログラムされています。 しかし、回避策は、IPSをカンマで区切って同じmeta_id内に格納できるということです。

あなたは配列にこれらのデータをしたい場合、あなたは、単一のすべてのIPSを格納することによって意味するか

+0

これは動作しますが、以前のIPSを追加する代わりに、ARRAYを追加してから次のIPを追加します。 別のものを追加すると、ARRAY、ARRAY、新しいIPになります – Kyon147

+1

更新された回答を参照 –

+0

これは機能しています!私が間違っていることを説明できますか? – Kyon147

関連する問題