ポストメタフィールドから単一の値を設定解除/削除してから置換/更新しようとしていますが、array_push() と unset() のコードが各配列からすべての値を削除しています。
これが、現在使用しているコードの 2 つの半分です。
まず、古い値を見つけて削除するには:
$ID = $_GET["post_id"];
$old = $entry["85"];
$old_meta = array();
$old_meta = get_post_meta($old,'_website',false);
if(in_array($ID, $old_meta[current][items])){
unset($old_meta[current][items][$ID]);
}
update_post_meta($old,'_website',$old_meta);
次に、新しい値を適切な場所に追加します。
$port = $entry["24"];
$new_meta = array();
$new_meta = get_post_meta($port,'_website',false);
$new_meta[content][items] = array();
array_push($new_meta[content][items],$ID);
update_post_meta($port,'_website',$new_meta);
正しい値を設定解除して挿入するように機能しますが、meta[current][items] 配列に (更新または設定解除の両方で) 存在していた他の値は削除されます。
関数を実行する前の配列は次のようになります: pastie.org/8112933
array_push を実行すると、次のようになります: pastie.org/8112956
設定を解除すると、次のようになります: pastie.org/8112974