如何解决/调试GET_TERMS突然没有结果?

时间:2019-04-14 作者:Robert Andrews

直到我发现taxonomy-company.php 主题文件已成功生成每个“”的缩进列表company“分类术语的公司族谱。

也就是说,company 是一种层次分类法。在术语归档页面上,我们可以看到该公司最重要的父公司,如果有,还可以看到其所有子公司,并在侧边栏中显示完整列表。

但它已经变得无赖,原因不明。

我将从下面的代码中省略后面的树显示函数,因为目前我推测问题更严重。

  /*************************************************************/
  /*                                                           */
  /*          Get company\'s corporate family tree              */
  /*                                                           */
  /*************************************************************/

  // $organisation = \'groupm\'
  $taxonomy_name = \'company\';

  /**
   * Get top level term, cf. https://wordpress.stackexchange.com/a/119268/39300
   */
  function get_top_level_term($term,$taxonomy){
      if($term->parent==0) return $term;
      $parent = get_term( $term->parent,$taxonomy);
      return get_top_level_term( $parent , $taxonomy );
  }
  $topmost = get_top_level_term($organisation,$taxonomy_name);

  $term_id = $topmost->term_id;
  /* Works ok to here */


  /**
  * Get the family
  */
  $args = array(
      \'parent\' => $topmost->term_id,
  );
  $family      = get_terms($taxonomy_name, $args);
  // print_r($family);            /* This has gone rogue */
  $family_size = count($family);
在访问公司“GroupM”(slug)的术语页面的示例中groupm), 功能get_top_level_term() 此处成功获取其父级“WPP”(slug)的术语wpp) 我们把后者的ID(7436) 在里面$term_id.

到目前为止,一切顺利。然而,当我喂它的时候$term_idget_terms()parent 参数,尝试获取WPP下的所有术语,然后$family 现在是空白数组(Array()). 和$family_size, 因此,是0. 这是不准确的-WPP下面有许多公司条款。

这以前从未发生过。现在这意味着显示公司树的后续代码将无法工作。在此之前,它完全可以使用此代码。这种意外的失败确实有问题。

我当然已经对我的网站进行了更改,但没有对边栏部分模板文件进行更改。事实上,我刚刚从备份中恢复了边栏文件,即分类法公司。php文件,它调用的另一个部分文件,以及包含特定于此分类法的某些函数的文件。但没有变化。

我想知道我是否在任何地方引入了get\\U术语的过滤器,或者这是否是一件事。

我已经运行了一个完整的呼叫跟踪,并发现此段重复,但它没有为我提供任何线索。。。

/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_term\' (length=8)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_company\' (length=11)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'wp_parse_str\' (length=12)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_terms_defaults\' (length=18)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'parse_term_query\' (length=16)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'pre_get_terms\' (length=13)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_terms_args\' (length=14)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'pre_option_company_children\' (length=27)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'alloptions\' (length=10)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'option_company_children\' (length=23)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_terms_orderby\' (length=17)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'list_terms_exclusions\' (length=21)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'sanitize_key\' (length=12)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_meta_sql\' (length=12)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'get_terms_fields\' (length=16)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'terms_clauses\' (length=13)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'query\' (length=5)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'pre_option_db_version\' (length=21)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'alloptions\' (length=10)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'option_db_version\' (length=17)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'sanitize_key\' (length=12)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'query\' (length=5)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'pre_option_company_children\' (length=27)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'alloptions\' (length=10)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'option_company_children\' (length=23)
/home/mysite/public_html/wp-content/themes/bs4boiler-platform/partials/page-blocks/org/org_sidebar.php(123) : runtime-created function:1:string \'query\' (length=5)
受影响的部分没有错误、警告或通知。所以我不知道怎样才能找出是什么打破了这个。

我怎样才能修复它?

更新1:我注意到:

a) 我的站点现在似乎是4.9.8(我不记得这样做过)。

b) 根据Codex for get_terms():

自4.5.0以来,应通过$args数组中的“taxonomy”参数传递分类法:

$terms = get_terms( array(
    \'taxonomy\' => \'post_tag\',
    \'hide_empty\' => false,
) );
因此,我尝试将我的$args规范更新为新的公式。但这没什么区别。无论是旧方法还是新方法,通过添加\'hide_empty\' => false 到其中一个-哪个reveals all the company terms to have 0 counts!

enter image description here

这由以下人员确认doing:

  $myterm = get_term( 7436, \'company\' );
  echo \'count: \'. $myterm->count;
But these new counts are not true. 在家族中,有许多职位都有公司术语“groupm”、“wpp”等。

这可能是这东西停止工作的原因。

也许重点应该转向-如何修复company 分类术语?(或者我在另一个文件的其他地方所做的事情是否仍然可能导致这种情况?)

更新2:很遗憾,wp_update_term_count_now(7436, \'company\'); 未准确更新“wpp”(7436) 计数超过0。

1 个回复
SO网友:Qaisar Feroz

4.5.0之前,第一个参数get_terms() 是分类法或分类法列表:自4.5.0以来,分类法应通过taxonomy 中的参数$args 阵列:

所以,这些线

 /**
  * Get the family
  */
  $args = array(
      \'parent\' => $topmost->term_id,
  );
  $family      = get_terms($taxonomy_name, $args);  
应该是

 /**
  * Get the family
  */
  $args = array(
      \'taxonomy\' => taxonomy_name,
      \'parent\' => $topmost->term_id,
  );
  $family      = get_terms($args);
请参见Documentation.

我希望这会有所帮助。