仅删除自定义分类术语会增加Tag_ID

时间:2014-05-10 作者:noelmcg

我正在运行一个挂钩到wp\\u trash\\u post的函数,该函数应该删除与自定义post匹配的自定义分类术语。

术语描述等于自定义帖子的ID。

  
function trash_custom_terms($post_id) {
  if ( \'custom_post\' != get_post_type($post_id)) {
    return;
  }

$this_post_ID = get_post( $post_id )->ID;

  $existing_terms = get_terms(\'\', array(
    \'hide_empty\' => false
    )
  );

  foreach($existing_terms as $term) {
    if ($term->description == $this_post_ID) {
      if (wp_delete_term($term->term_id, \'custom_taxonomy\')){
            write_log(\'should be deleted\');
      }else{
            write_log(\'isnt deleted\');
      }
    }
  }
}
add_action(\'wp_trash_post\', \'trash_custom_terms\');
从我的代码中可以看出,我正在使用一个函数来写入WP调试日志。

当代码运行并删除匹配的自定义帖子时,ID分类术语将增加1!这就好像它被删除了,然后被一个相同的术语所取代。

我不知道发生了什么,我已经检查了又检查了一遍,确认变量是正确的,它们是正确的。

谁能解释一下为什么会这样?

干杯

诺埃尔

2 个回复
最合适的回答,由SO网友:noelmcg 整理而成

A.FTER 我NsPECTED MY CoDE A.ND THE LoGs 我 CoULD sEE THA.T THE PRoBLEM WA.s W我TH THE FUNCT我oN 我 UsED To CREA.TE A. NEW TA.十、oNoMY TERM WHEN A. NEW CUsToM PosT WA.s A.DDED.

&#十、A.;&#十、A.;

THE CoDE WoULD oNLY CHECK FoR GET_PosT_sTA.TUs = \'A.UTo-DRA.FT\' A.ND WoULD sT我LL RUN A.ND RECREA.TE THE TERM WHEN GET_PosT_sTA.TUs = \'TRA.sH\'

&#十、A.;&#十、A.;

&#十、A.;FUNCT我oN UPDA.TE_CUsToM_TERMs($PosT_我D) {&#十、A.;  //CHECKED 我F CoRRECT PosT&#十、A.;  //oNLY CHECKED 我F 我T WA.sN\'T A.N A.UTo DRA.FT&#十、A.;  我F (GET_PosT_sTA.TUs($PosT_我D) == \'A.UTo-DRA.FT\') {&#十、A.;    RETURN;&#十、A.;  }&#十、A.;  //CA.RR我ED oUT REsT oF FUNCT我oN ...&#十、A.;}&#十、A.;A.DD_A.CT我oN(\'sA.五、E_PosT\', \'UPDA.TE_CUsToM_TERMs\');&#十、A.;

&#十、A.;&#十、A.;

sCHooLBoY ERRoR. D我DN\'T REA.L我sE sA.五、E_PosT WoULD RUN WHEN THE PosT WA.s sENT To THE TRA.sH.

&#十、A.;&#十、A.;

UPDA.TED CoDE W我TH THE FoLLoW我NG:&#十、A.;

&#十、A.;  我F ((GET_PosT_sTA.TUs($PosT_我D) == \'A.UTo-DRA.FT\') || (GET_PosT_sTA.TUs($PosT_我D) == \'TRA.sH\') ) {&#十、A.;    RETURN;&#十、A.;  }&#十、A.;

&#十、A.;&#十、A.;

LEssoN LEA.RNT!

&#十、A.;

SO网友:Jared Cobb

我不确定您为什么会看到ID增量,但有一个问题是,您的函数调用get_terms() 需要包含一个分类名称数组作为第一个参数。

在您的情况下,只需要包含一个具有单个分类名称的数组。例如:

$existing_terms = get_terms(array(\'custom_taxonomy\'), array(
        \'hide_empty\' => false
    )
);
当我运行您的示例(没有此数组)时,我从get_terms() 作用

添加此阵列似乎如您所述工作正常。More information on how to use get_terms().

结束

相关推荐