在 Woocommerce 中添加产品属性列以编辑订单页面
Adding product attribute column to edit order page in Woocommerce
非常感谢任何帮助。
到目前为止尝试了很多事情都无济于事,包括这里的建议:
Add product short description to Woocommerce admin orders preview
这是我目前拥有的:
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,属性中没有数据,即使它的值肯定保存在数据库中。
有什么想法吗?
我附上了我想要实现的截图,虽然我可以让 header 正常显示,甚至附加到产品的数据数组,实际属性是空的.如果我使用:
$_product->get_attribute( 'colour' )
就像我在网站上的其他地方一样成功,我收到一个错误:
Uncaught Error: Call to a member function get_attribute() on null
我尝试设置全局 $product;在函数中,nada.
错误日志:
Fatal error: Uncaught Error: Call to a member function get_attribute() on null in /home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php:1237 Stack trace: #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 in /home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php on line 1237
functions.php
的 1237 行是:
$colour = $_product->get_attribute( 'colour' );
如上所述。
这对我有用:
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()。感谢这个 post:
show product meta in order items table in Order Details
非常感谢任何帮助。
到目前为止尝试了很多事情都无济于事,包括这里的建议:
Add product short description to Woocommerce admin orders preview
这是我目前拥有的:
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,属性中没有数据,即使它的值肯定保存在数据库中。
有什么想法吗?
我附上了我想要实现的截图,虽然我可以让 header 正常显示,甚至附加到产品的数据数组,实际属性是空的.如果我使用:
$_product->get_attribute( 'colour' )
就像我在网站上的其他地方一样成功,我收到一个错误:
Uncaught Error: Call to a member function get_attribute() on null
我尝试设置全局 $product;在函数中,nada.
错误日志:
Fatal error: Uncaught Error: Call to a member function get_attribute() on null in /home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php:1237 Stack trace: #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 in /home/customer/www/mysite/public_html/wp-content/themes/mytheme/functions.php on line 1237
functions.php
的 1237 行是:
$colour = $_product->get_attribute( 'colour' );
如上所述。
这对我有用:
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()。感谢这个 post:
show product meta in order items table in Order Details