SQL操作VS wp_update_term_count_now()相关问题

时间:2019-02-05 21:15:48

标签: php mysql sql wordpress

我在不同分类法中的术语计数方面遇到了一些奇怪的问题。这就是为什么我希望使用wp_update_term_count_now()来解决它的原因,但是似乎这些函数仅处理特定的分类法,而不处理共享的分类法(在某些CPT中使用了术语)。

这是我的实际代码:

$taxonomies = get_taxonomies();
foreach( $taxonomies as $taxonomy ) {
    //echo '<pre>'.$taxonomy.'</pre>';
    $args = array(
        'fields' => 'ids'
    );
    $terms = get_terms( $taxonomy, $args );
if( is_array( $terms ) ) wp_update_term_count_now( $terms, $taxonomy );

===>此功能仅更新我的主要分类法的计数器,所有其他共享分类法似乎都被忽略,没有任何错误。

这就是为什么我决定直接使用SQL的原因,并且如果我针对每种帖子类型全局更新计数值,它可以按预期工作,如下所示:

 UPDATE alt_15846_term_taxonomy tt
     SET count =
     (SELECT count(p.ID) FROM  alt_15846_term_relationships tr
     LEFT JOIN alt_15846_posts p
     ON (p.ID = tr.object_id AND p.post_type = 'jeux-video' AND p.post_status = 'publish')
     OR (p.ID = tr.object_id AND p.post_type = 'logiciels' AND p.post_status = 'publish')
     OR (p.ID = tr.object_id AND p.post_type = 'ext-navigateurs' AND p.post_status = 'publish')
     OR (p.ID = tr.object_id AND p.post_type = 'plugins-cms' AND p.post_status = 'publish')
     OR (p.ID = tr.object_id AND p.post_type = 'sites-web' AND p.post_status = 'publish')
     OR (p.ID = tr.object_id AND p.post_type = 'services-en-ligne' AND p.post_status = 'publish')
     WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
 )

此SQL检索我所有自定义帖子类型的所有分类法的所有术语中每个注册帖子类型的计数,以便显示每个术语的正确计数器。

我的问题是:如何使用wp_update_term_count_now($ terms,$ taxonomy)实现此目的?我没有发现我的代码有任何错误,到目前为止没有错误...

感谢您的帮助。

0 个答案:

没有答案