Term_Existes()对已存在的术语返回NULL

时间:2016-01-09 作者:dotancohen

看来term_exists() 正在为已存在的术语返回NULL:

$name = "כל האזורים"
$taxonomy_name = "geographictermsisrael"
$args = array("slug" => "everything", "parent" => 0)

var_dump(term_exists($name, $taxonomy_name, $args)); // Returns NULL (not 0)

if ( !term_exists($name, $taxonomy_name, $args) ) {
    $foo = wp_insert_term($name, $taxonomy_name, $args);
    var_dump($foo); // Returns the array below
}

object(WP_Error)#4193 (2) {
  ["errors"]=>
  array(1) {
    ["term_exists"]=>
    array(1) {
      [0]=>
      string(77) "השם או מזהה הכתובת כבר קיימים עם ההורה הזה."
    }
  }
  ["error_data"]=>
  array(1) {
    ["term_exists"]=>
    string(3) "699"
  }
}
If the term already exists, why might term_exists() return NULL? 这是数据库的外观:

mysql> select * from wp_term_taxonomy where taxonomy=\'geographictermsisrael\';
+------------------+---------+-----------------------+-------------+--------+-------+
| term_taxonomy_id | term_id | taxonomy              | description | parent | count |
+------------------+---------+-----------------------+-------------+--------+-------+
|              738 |     699 | geographictermsisrael |             |      0 |     0 |
+------------------+---------+-----------------------+-------------+--------+-------+
1 row in set (0.00 sec)

mysql> select * from wp_terms where term_id=699;
+---------+---------------------+------------+------------+
| term_id | name                | slug       | term_group |
+---------+---------------------+------------+------------+
|     699 | כל האזורים          | everything |          0 |
+---------+---------------------+------------+------------+
1 row in set (0.00 sec)

mysql> select * from wp_term_relationships where term_taxonomy_id=738;
Empty set (0.00 sec)

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

的第三个参数term_exists() 是整数,而不是数组。

参数检查术语默认值:无$父项(整数)(可选)$父项的父项ID限制现有搜索的默认值:0

传递正确的参数,它就会工作。

var_dump(term_exists($name, $taxonomy_name)); 
0 是默认值,因此无需指定它。

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p