여기 에이 문제에 대한 몇 가지 생각이 있지만, 내가 간과 한 것이 있지만 결론을 내릴 수는 없지만 결정적인 대답은 아닙니다.
예, 기술적으로 결과가있을 수 있습니다.
호출 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
이제 귀하의 경우에 한 번에 하나의 게시물 만 삽입하는 경우 기간 계산을 연기하면 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를 통해 또는 프로그래밍 방식으로 주어진 분류 체계에 대한 용어를 추가 할 때까지 수동으로 호출 하거나 대기하는 것입니다.
생각할 거리.