首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Woocommerce中添加产品属性列来编辑订单页面

在Woocommerce中添加产品属性列来编辑订单页面
EN

Stack Overflow用户
提问于 2019-11-27 12:18:27
回答 1查看 2.2K关注 0票数 2

对此的任何帮助都非常感谢。

到目前为止,已经尝试了一些没有结果的东西,包括这里的建议:

Add product short description to Woocommerce admin orders preview

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
add_action( 'woocommerce_admin_order_item_headers', 'custom_admin_order_items_headers', 20, 1 );
function custom_admin_order_items_headers( $order ){

    echo '<th>';
    echo __('Colour', 'woocommerce') . '</th>';
}

add_action( 'woocommerce_admin_order_item_values', 'custom_admin_order_item_values', 20, 3 );
function custom_admin_order_item_values( $_product, $item, $item_id ) {
             
    $colour = $_product->get_attribute( 'colour' );
    echo '<td>' . $colour . '</td>';
}

每个产品都有许多属性,我希望在编辑顺序页面的新列中显示这些属性之一。

问题是,出于某种原因,产品属性是空的--如果我只是回显$_product,则属性中没有数据,即使它在DB中保存了一个值。

有什么想法吗?

我附上了我想要实现的目标的屏幕截图,虽然我可以让标题显示得很好,甚至连一个附加到产品上的数据数组都是空的。如果我用:

代码语言:javascript
复制
$_product->get_attribute( 'colour' )

就像我成功地在其他地方做的一样,我得到了一个错误:

代码语言:javascript
复制
Uncaught Error: Call to a member function get_attribute() on null

我尝试设置全局$product;在函数中,nada。

错误日志:

/home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php:1237堆栈跟踪中对null的成员函数get_attribute()的调用:#0 /home/customer/www/mysite/public_html/wp-includes/class-wp-hook.php(288):custom_admin_order_item_values(NULL,Object(WC_Order_Item_Shipping) )( 26) #1 /home/mysite/public_html/wp-includes/class-wp-hook.php(312):WP_Hook->应用_过滤器(‘’,数组) #2 /home/customer/www/mysite/public_html/wp-includes/plugin.php(478):WP_Hook->do_action(Array) #3 /home/customer/www/mysite/public_html/wp-content/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-shipping.php(53):do_action(‘woocommerce_adm.’,NULL,Object(WC_Order_Item_Shipping),( 26) #4 /home/customer/www/mysite/public_html/wp-content/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-items.php(73):包括(‘/home/customer/.’) #5 /home/customer/www/mysite,在第1237行的/home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php中

functions.php 1237上的行是:

代码语言:javascript
复制
$colour = $_product->get_attribute( 'colour' );

如上文所述。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-27 14:23:29

这对我起了作用:

代码语言:javascript
复制
add_action('woocommerce_admin_order_item_values', 'my_woocommerce_admin_order_item_values', 10, 3);
function my_woocommerce_admin_order_item_values($_product, $item, $item_id = null) {

    $colour = get_the_terms( $_product->post->ID, 'pa_colour');
    echo '<td>' . $colour[0]->name . '</td>';
}

必须沿着分类学的路线走,而不是get_attribute()。感谢这篇文章:

show product meta in order items table in Order Details

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59070081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档