创建帖子时动态添加分类术语到自定义帖子类型

问题描述 投票:0回答:2

我使用自定义帖子类型 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');
}

但似乎不起作用。我需要它来插入术语,如果该术语已经存在,我需要它来更新与该术语相关的帖子数量。

wordpress dynamic taxonomy
2个回答
2
投票

您可以使用

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()
的参考,您可以查看此链接

希望这对您有帮助。


0
投票

在这里,您可以使用 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' );

© www.soinside.com 2019 - 2024. All rights reserved.