Dan*_*iel 9 php wordpress woocommerce
我客户网站上的产品需要我通过产品 - > Wordpress管理中的属性添加的某些属性.在这个导入脚本我编码我需要使用该函数update_post_meta($post_id, $meta_key, $meta_value)导入适当的属性和值.
目前我有这样的功能:
update_post_meta( $post_id, '_product_attributes', array());
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何正确传递属性及其值?
Dan*_*iel 15
是的,所以我花了一段时间来弄清楚自己,但我终于设法通过编写以下函数来做到这一点:
// @param int $post_id - The id of the post that you are setting the attributes for
// @param array[] $attributes - This needs to be an array containing ALL your attributes so it can insert them in one go
function wcproduct_set_attributes($post_id, $attributes) {
$i = 0;
// Loop through the attributes array
foreach ($attributes as $name => $value) {
$product_attributes[$i] = array (
'name' => htmlspecialchars( stripslashes( $name ) ), // set attribute name
'value' => $value, // set attribute value
'position' => 1,
'is_visible' => 1,
'is_variation' => 1,
'is_taxonomy' => 0
);
$i++;
}
// Now update the post with its new attributes
update_post_meta($post_id, '_product_attributes', $product_attributes);
}
// Example on using this function
// The attribute parameter that you pass along must contain all attributes for your product in one go
// so that the wcproduct_set_attributes function can insert them into the correct meta field.
$my_product_attributes = array('hdd_size' => $product->hdd_size, 'ram_size' => $product->ram_size);
// After inserting post
wcproduct_set_attributes($post_id, $my_product_attributes);
// Woohay done!
Run Code Online (Sandbox Code Playgroud)
如果他们需要在WooCommerce中以编程方式导入多个属性,我希望此功能可以帮助其他人!
小智 6
我试过丹尼尔的答案,但这对我没用.可能是Wordpress/Woocommerce代码已经发生变化,或者我可能不太明白该怎么做,但无论哪种方式代码都没有为我做任何事情.然而,在使用它作为基础的大量工作之后,我想出了这段代码并将它放在我的主题上functions.php:
function wcproduct_set_attributes($id) {
$material = get_the_terms( $id, 'pa_material');
$material = $material[0]->name;
// Now update the post with its new attributes
update_post_meta($id, '_material', $material);
}
// After inserting post
add_action( 'save_post_product', 'wcproduct_set_attributes', 10);
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以将我在WooCommerce安装中设置为"材料"的内容作为自定义属性,并将其添加到正式元作为_material.这又允许我使用的代码片段另一个所以WooCommerce搜索功能延伸到元字段,这意味着我可以搜索在WooCommerce搜索领域的材料,并与该材料的所有项目出现.
我希望这对某人有用.