如何添加术语(不删除其他术语)

时间:2014-02-23 作者:Derek

我的网站上有一个表单,允许登录用户以基本表单标记网站前端的产品。我使用Woocommerce作为商业平台。

Woocommerce使用自定义帖子类型注册其产品。产品标签是Woocommerce用于标记产品的分类法(Product\\u tag)。

我正在使用wp\\u set\\u object\\u terms插入用户提交的术语。问题是,当他们提交新的“标签”时,它会覆盖任何现有的“标签”,并替换为新的“标签”。

我只需要为表单添加标签并保留产品的现有标签(post)的方法。

以下是我所拥有的:

if (is_user_logged_in()) {


    if(isset($_POST[\'submitted\']) && isset($_POST[\'post_nonce_field\']) && wp_verify_nonce($_POST[\'post_nonce_field\'], \'post_nonce\')) {


    //Tagging
    wp_set_object_terms( $post->ID, explode( \',\', $_POST[\'postTags\'] ), \'product_tag\' );

}

?>
<form name="primaryTagForm" action="#" id="primaryTagForm" method="POST" enctype="multipart/form-data" >
    <fieldset class="tags">
        <label for="post_tags">Tags:</label>
        <input type="text" value="" tabindex="35" name="postTags" id="postTags" />
    </fieldset>

    <fieldset>
        <input type="hidden" name="submitted" id="submitted" value="true" />
        <?php wp_nonce_field( \'post_nonce\', \'post_nonce_field\' ); ?>
        <button class="button" type="submit"><?php _e(\'Tag Product\', \'framework\') ?></button>
    </fieldset>
</form>

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

第四个参数为wp_set_object_terms() 是一个“append”参数。

$append (bool)(必选)如果为true,标记将附加到对象。如果为false,标记将替换现有标记

    Default: False

http://codex.wordpress.org/Function_Reference/wp_set_object_terms

如果通过,代码应该可以工作true 作为第四个论点。

wp_set_object_terms( 
  $post->ID, 
  explode( \',\', $_POST[\'postTags\'] ), 
  \'product_tag\',
  true
);

结束