web-dev-qa-db-ja.com

存在しない場合でも、dbからpost metaを削除しますか?


投稿メタが存在しなくても「削除」したのが最初ではない:

    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');

もし$ countが空で、それがデータベースに存在しなければ、まずpostメタを削除しますか?どうして ?ご回答有難うございます

1
Paul_p

コードの中で、delete_post_meta()が最初に実行されることを示しているのは、add_post_meta()がその後に実行されるからです。最初に削除が行われなかった場合は、メタテーブルに複数のエントリが格納されることになります。

正直に言うと、update_post_meta()delete_post_meta()の両方ではなくadd_post_meta()を使用するほうが良いでしょう。その理由は、update_post_meta()が既存の値を更新しようとし、それが存在しない場合です。値を追加します。

1
Brady

このコードは、コアのWordPressコードからですか、それともプラグインまたはチュートリアルからですか。

空の文字列のように、無効な古いデータがデータベースにある可能性があります。確実に "clean"データ(常に整数)から始めるようにするには、最初にこのキーを使用してすべてのデータを削除してから、クリーンデータを挿入します。

Brady氏が指摘したように、update_post_meta()を使って既存の可能性のある値を1ステップで置き換えるほうがよいでしょう。

1
Jan Fabry