任何对此表示赞赏的帮助,到目前为止都尝试了许多无济于事的方法,包括此处的建议Add product short description to Woocommerce admin order edit pages。这是我到目前为止的内容:
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属性为空-如果我只是回显$ _product,则该属性中没有数据,即使在数据库中肯定存在它的值也是如此。
有什么想法吗?
我已经附上了我想要实现的屏幕截图,尽管我可以使标题显示得很好,甚至将数据数组附加到产品上,但实际属性为空。如果我使用:
$_product->get_attribute( 'colour' )
就像我在网站上的其他任何地方都成功所做的一样,我得到一个错误:
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中,调用成员函数get_attribute()时为null堆栈跟踪:#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-> apply_filters('',Array)#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):include('/ home / customer / ...')#5 / home / customer / www / mysite /home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.ph p在第1237行
functions.php的1237行是:
$colour = $_product->get_attribute( 'colour' );
如上所述。
答案 0 :(得分:0)
这对我有用:
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()。感谢这篇文章: