我使用自定义帖子类型 UI 插件创建了自定义帖子类型和分类法。前端有一个表单,填写后会在自定义帖子类型调查中创建一个新帖子。我希望帖子的标题(这是根据另一篇帖子动态添加的)作为分类术语,自定义分类是survey_category。我发现了这个:
add_action('publish_survey', 'add_survey_term');
function add_survey_term($post_ID) {
global $post;
$survey_post_name = $post->post_name;
wp_insert_term( $survey_post_name, 'survey_category');
}
但似乎不起作用。我需要它来插入术语,如果该术语已经存在,我需要它来更新与该术语相关的帖子数量。
您可以使用
wp_set_object_terms()
动态添加分类到您的帖子中。此函数将插入术语,如果该术语已存在,它将更新与该术语关联的帖子数。我已经做了一个带有帖子名称和分类名称的小例子,您可以尝试下面的代码:
$name = $_POST['value']['post_name'];
$tax_name = $_POST['value']['tax_name'];
$args = array(
'post_title' => $name,
'post_type' => 'your_post_type',
'post_status' => 'publish',
'comment_status' => 'close',
'ping_status' => 'closed'
);
$pid = wp_insert_post($args);
wp_set_object_terms($pid, $tax_name, 'your_tax_slug', false);
欲了解更多
wp_set_object_terms()
的参考,您可以查看此链接。
希望这对您有帮助。
在这里,您可以使用 term_exists 来确保术语是否退出,如果不插入它并在您的帖子中设置
$term = term_exists($termName, '$taxonomyName'); if (!$term) { $term = wp_insert_term($termName, '$taxonomyName'); } $term_id = is_array($term) ? $term['term_id'] : $term; wp_set_post_terms($postId, $term_id,'$taxonomyName' );