我目前正在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 );
}