以编程方式更新WordPress发布术语

时间:2014-05-12 作者:danyo

我目前正在woocommerce的wordpress上工作,并制作一个自定义插件。

我想通过我自己的管理面板手动更新产品类别,以下是我目前所拥有的:

$catTerms = get_terms(\'product_cat\', array(\'hide_empty\' => 0, \'orderby\' => \'ASC\'));
这将在循环时获取所有产品类别。

然后,我向循环中的项目添加复选框,如下所示:

<label><input name="" type="checkbox" value="" id="cat_term_<?php echo $catTerm->name;?>" name="cat_term[]" /><?php echo $catTerm->name; ?></label>
然后我保存这样的术语,但它不起作用:

$prod_cats = $_POST[\'cat_term\'];
wp_set_post_categories( $id, $prod_cats );
我还尝试了以下方法:

wp_set_object_terms( $id, $prod_cats );
以及:

wp_set_post_terms( $id, $prod_cats );
我做错什么了吗?也许没有以正确的方式保存它们?

要求的完整代码:

<?php 
            $cats = array();            
            $product->get_categories();


            //print_r($cats);


             $terms = wp_get_post_terms( get_the_id(), \'product_cat\' );


             foreach ($terms as $term){
                 $cats[] =  $term->name;
             }

        print_r($cats);

            ?>

            <?php $catTerms = get_terms(\'product_cat\', array(\'hide_empty\' => 0, \'orderby\' => \'ASC\')); ?>
            <?php foreach($catTerms as $catTerm) : ?>


            <?php if (in_array($catTerm->name, $cats)){ ?>

            <label><input name="" type="checkbox" value="" id="cat_term_<?php echo $catTerm->name;?>" name="cat_term[]" checked="checked" /><?php echo $catTerm->name; ?></label><br />             

            <?php } else { ?>

            <label><input name="" type="checkbox" value="" id="cat_term_<?php echo $catTerm->name;?>" name="cat_term[]" /><?php echo $catTerm->name; ?></label><br />


            <?php } ?>

            <?php endforeach; ?>
            <?php } ?>


if (isset($_POST[\'save\'])) {
    $id = $_POST[\'item_id\'];

    $prod_cats = $_POST[\'cat_term\'];

    wp_set_post_terms( $id, $prod_cats );


}

1 个回复
SO网友:shahpranaf

请在wp\\u set\\u post\\u terms函数中添加分类名称。

wp_set_post_terms( $id, $prod_cats, \'product_cat\' );
请参考wpcodexwp_set_post_terms

结束

相关推荐

如何从操作钩子‘set_Object_Terms’中获取Term_id?

我有以下代码,我想在该函数中使用term\\u id。我知道变量$terms包含术语;然而,我不知道如何从中获取术语id。add_action(\'set_object_terms\',\'wpse5123_set_object_terms\',10,4); function wpse5123_set_object_terms($object_id, $terms, $tt_ids, $taxonomy){ if($taxonomy == \'category\')