Я использую wp_insert_post, и все поля работают, за исключением tax_input. Что-то не так с моим кодом?
$customtax = array( 'product_link' => $link, 'product_price' => $price, 'product_description' => $desc ); $my_post = array( 'post_title' => $title, 'post_content' => $content, 'post_type' => 'products', 'tax_input' => $customtax );
заранее спасибо
Наиболее распространенная причина заключается в том, что вы запускаете этот код без контекста пользователя (cron и т. Д.). В контексте wp_insert_post()
WP проверит, имеет ли пользователь права на таксономию. Ни один пользователь не имеет никаких разрешений, равных без назначенных условий.
Обходной путь состоит в том, чтобы создать пост сначала, а затем назначить ему условия. Когда термины назначаются явно через метод API (например, wp_set_object_terms()
), проверка разрешений не выполняется.
При использовании tax_input для вставки почты обязательно используйте идентификатор таксономии термина, поскольку пули или имена, похоже, выбрасываются
$my_post = array( 'post_title' => $title, 'post_content' => $content, 'post_type' => 'products', 'tax_input' => array('myTax', array(4,458,11478)), );
Оказывается, что tax_input
не работает, если у пользователя нет возможностей работать с пользовательской таксономией:
wp-includes / post.php (wp_insert_post):
Поэтому либо добавьте правильные кепки, либо используйте wp_set_object_terms()