term_exists (), возвращающий NULL на срок, который существует

Кажется, что 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" } } 

Если этот термин уже существует, почему term_exists() возвращает 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) 

Третий аргумент для term_exists() – целое число, а не массив.

параметры

$ термин
( integer | string ) ( обязательно ) Термин для проверки

По умолчанию: нет
$ таксономия
( строка ) ( необязательно ) Имя таксономии для использования

По умолчанию: ''
$ родитель
( целое число ) ( необязательно ) $ parent ID родительского термина, под которым ограничивается поиск поиска

По умолчанию: 0

Передайте правильные аргументы, и он работает.

 var_dump(term_exists($name, $taxonomy_name)); 

0 по умолчанию, поэтому вам не нужно указывать его.