これは問題に関するいくつかの考えですが、これは私が見落としているいくつかの点があるかもしれないので、これは決して決定的な答えではないことに注意してください。
はい、技術的には影響があるかもしれません。
呼び出しwp_defer_term_counting(true)
が本当に有益になるのは、たとえば、プロセスの一部として、投稿のデータベースへの一括挿入と各オブジェクトへの用語の割り当てを実行しているときです。
このような場合は、次のようにします。
wp_defer_term_counting(true); //defer counting terms
//mass insertion or posts and assignment of terms here
wp_defer_term_counting(false); //count terms after completing business logic
さて、あなたの場合、一度に1つの投稿しか挿入しない場合でも、用語のカウントを延期することでメリットがあります。ただしwp_defer_term_counting(false)
、条件付きまたはその他のその他のロジック/処理の期間カウント。
さらに説明するために、次のことを実行するとします。
という分類法内に3つの用語があると仮定します。product_cat
これらの用語のIDは、それぞれ1(用語名A)、2(用語名B)および3(用語名C)です。
上記の各用語には、すでに用語カウントがあります5
(例のみ)。
その後、これが起こります...
wp_defer_term_counting(true); //defer counting terms
$post_id = wp_insert_post($data);
wp_set_object_terms($post_id, array(1, 2, 3), 'product_cat');
次に、ロジックの後半で、その用語に関連付けられているオブジェクトの量を評価し、その結果に基づいて他のアクションを実行するため、用語をフェッチすることを決定します。
だからあなたはこれをします...
$terms = get_the_terms($post_id, 'product_cat');
//let's just grab the first term object off the array of returned results
//for the sake of this example $terms[0] relates to term_id 1 (A)
echo $terms[0]->count; //result 5
//dump output of $terms above
array (
0 =>
WP_Term::__set_state(array(
'term_id' => 1,
'name' => 'A',
'slug' => 'a',
'term_group' => 0,
'term_taxonomy_id' => 1,
'taxonomy' => 'product_cat',
'description' => '',
'parent' => 0,
'count' => 5, //notice term count still equal to 5 instead of 6
'filter' => 'raw',
)),
)
この例の場合、用語名A(term_id 1)にはすでに5つのオブジェクトが関連付けられていると言いました。言い換えると、用語カウントはすでに5です。
したがって、count
上記の返されたオブジェクトのパラメーターは6であると想定しますが、wp_defer_term_counting(false)
操作後に呼び出しを行わなかったため、該当する用語(用語A、B、またはC)の用語カウントは更新されませんでした。
したがって、これは操作後に呼び出しをせずに呼び出した結果です。wp_defer_term_counting(true)
wp_defer_term_counting(false)
さて問題はもちろんです、これはあなたに影響を与えますか?値を使用して他の操作を実行get_the_terms
するという用語を取得するアクションを呼び出したり実行する必要がない場合はどうなりますcount
か?まあその場合は素晴らしい、あなたにとっては問題ありません。
しかし、他の誰かが関数のset_object_terms
アクションに夢中になっwp_set_object_terms()
ていて、用語カウントが正しいことに依存している場合はどうなりますか?これで、結果が発生する可能性のある場所がわかります。
または、リクエストが終了した後、分類用語を取得count
してビジネスロジックでプロパティを利用する別のリクエストが実行された場合はどうなりますか?それは問題になる可能性があります。
count
値が非常に害を及ぼす可能性があるとは思えないかもしれませんが、そのようなデータが私たちの哲学に基づいて使用される方法を想定することはできません。
また、代替回答で述べたように、分類リストの表に表示される数も更新されません。
実際、用語カウントを延期してリクエストが終了した後で用語カウントを更新する唯一の方法は、手動で電話をかけるwp_update_term_count($terms, $taxonomy)
か、分類UIを介して、またはプログラムによって、誰かが特定の分類の用語を追加するまで待つことです。
思考の糧。