Nach dem Lesen https://rudrastyh.com/woocommerce/columns.html Ich konnte eine Spalte mit der Bestellzahlungsmethode in der WooCommerce-Admin-Bestellliste hinzufügen
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;
}
}
Dies funktioniert perfekt und fügt die gewünschten Status in der benutzerdefinierten Spalte hinzu
Dann habe ich basierend auf einem Code, den ich gefunden habe, Anpassungen vorgenommen, um den Filter hinzuzufügen
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;
}
Aber aufgrund dieser Änderungen habe ich im zweiten Teil meines Codes einen Fehler in meinen Protokolldateien:
“Nicht erfasster Fehler: Aufruf einer Member-Funktion get_payment_method() bei null”.
Es scheint, dass die globale Variable $the_order
wird nicht erkannt?
Obwohl ich nicht sofort eine Idee habe, wie ich das anders anwenden kann. Jeder Rat wäre willkommen