【发布时间】:2021-12-03 14:32:57
【问题描述】:
阅读https://rudrastyh.com/woocommerce/columns.html 后,我能够在 WooCommerce 管理订单列表中添加一个包含订单付款方式的列
add_filter('manage_edit-shop_order_columns', 'misha_order_items_column' );
function misha_order_items_column( $order_columns ) {
$order_columns['order_payment_method'] = "Payment method";
return $order_columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
global $the_order; // the global order object
if( $colname == 'order_payment_method' ) {
// Get payment method
$payment_method = $the_order->get_payment_method();
echo $payment_method;
}
}
这很好用,并在自定义列中添加所需的状态
然后,根据我找到的代码,我进行了调整以添加过滤器
add_action('restrict_manage_posts', 'add_shop_order_filter_by_state');
function add_shop_order_filter_by_state(){
global $pagenow, $typenow, $the_order;
if( 'shop_order' === $typenow && 'edit.php' === $pagenow ) {
// Get payment method
$payment_method = $the_order->get_payment_method();
// Initializing
$filter_id = 'payment_method';
$current = isset($_GET[$filter_id])? $_GET[$filter_id] : '';
echo '<select name="'.$filter_id.'">
<option value="">'.__( 'Filter by payment method', 'woocommerce' )."</option>";
// Loop through shipping zones locations array
foreach( $payment_method as $method ) {
echo $method;
}
echo '</select>';
}
}
add_filter( 'request', 'process_admin_shop_order_filtering_by_state', 99 );
function process_admin_shop_order_filtering_by_state( $vars ) {
global $pagenow, $typenow;
$filter_id = 'payment_method';
if ( $pagenow == 'edit.php' && 'shop_order' === $typenow
&& isset( $_GET[$filter_id] ) && ! empty($_GET[$filter_id]) ) {
$vars['meta_key'] = 'payment_method';
$vars['meta_value'] = $_GET[$filter_id];
$vars['orderby'] = 'meta_value';
}
return $vars;
}
但是由于这些更改,在我的代码的第二部分中,我的日志文件中有一个错误:
“未捕获的错误:调用成员函数 get_payment_method() on 空”。
好像无法识别全局变量$the_order?
虽然我不立即知道如何以不同的方式应用它。任何建议将不胜感激
【问题讨论】:
标签: wordpress woocommerce backend hook-woocommerce payment-method