投稿メタが存在しなくても「削除」したのが最初ではない:
$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メタを削除しますか?どうして ?ご回答有難うございます
コードの中で、delete_post_meta()
が最初に実行されることを示しているのは、add_post_meta()
がその後に実行されるからです。最初に削除が行われなかった場合は、メタテーブルに複数のエントリが格納されることになります。
正直に言うと、update_post_meta()
とdelete_post_meta()
の両方ではなくadd_post_meta()
を使用するほうが良いでしょう。その理由は、update_post_meta()
が既存の値を更新しようとし、それが存在しない場合です。値を追加します。
このコードは、コアのWordPressコードからですか、それともプラグインまたはチュートリアルからですか。
空の文字列のように、無効な古いデータがデータベースにある可能性があります。確実に "clean"データ(常に整数)から始めるようにするには、最初にこのキーを使用してすべてのデータを削除してから、クリーンデータを挿入します。
Brady氏が指摘したように、update_post_meta()
を使って既存の可能性のある値を1ステップで置き換えるほうがよいでしょう。