Добавьте столбец для платежного шлюза в список заказов администратора в Woocommerce

У меня есть настраиваемый плагин платежного шлюза, который мне нужно включить настраиваемый столбец в список заказов woocommerce, который будет показывать статус транзакции с платежного шлюза. Есть ли какой-нибудь крючок для написания этого кода внутри плагина платежного шлюза?

class WC_xxxxx_Gateway extends WC_Payment_Gateway {

  public function __construct() {
 add_filter( 'manage_edit-shop_order_columns', 'wc_new_order_column' );
    }

     public function wc_new_order_column($columns){
        $columns['my_column'] = 'transaction status';
        return $columns;
       } // no output

     }

person user8754108    schedule 20.08.2019    source источник


Ответы (1)


Вы не можете добавить столбец в список заказов администратора только для одного метода оплаты (шлюза), и вам не нужно расширять класс WC_Payment_Gateway, чтобы добавить настраиваемый столбец в заказы администратора список.

Сначала просто добавьте столбец для всех платежных шлюзов, и вы можете настроить отображаемые значения для каждого заказа на основе вашего пользовательского метода оплаты.

Для этого вам необходимо узнать идентификатор метода оплаты для вашего пользовательского платежного шлюза (заменив в коде paypal правильным идентификатором метода оплаты.

Затем вы можете добавить условия во вторую функцию ниже, чтобы отображать то, что вы хотите, связанное с вашим «статусом» пользовательского платежного шлюза.

add_filter( 'manage_edit-shop_order_columns', 'payment_gateway_orders_column' );
function payment_gateway_orders_column( $columns ) {
    $new_columns = array();

    foreach ( $columns as $column_key => $column_label ) {
        if ( 'order_total' === $column_key ) {
            $new_columns['transaction_status'] = __('Transaction status', 'woocommerce');
        }

        $new_columns[$column_key] = $column_label;
    }
    return $new_columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'payment_gateway_orders_column_content' );
function payment_gateway_orders_column_content( $column ) {
    global $the_order, $post;

    // HERE below set your targeted payment method ID
    $payment_method_id = 'paypal';

    if( $column  == 'transaction_status' ) {
        if( $the_order->get_payment_method() === $payment_method_id ) {
            // HERE below you will add your code and conditions
            $output = 'some status';
        } else {
            $output = '-';
        }

        // Display
        echo '<div style="text-align:center;">' . $output . '</div>';
    }
}

Код находится в файле functions.php активной дочерней темы (или активной темы) или в файле настраиваемого плагина. протестировал и работает.

person LoicTheAztec    schedule 20.08.2019
comment
Как добавить фильтр в пользовательский файл плагина - person user8754108; 22.08.2019
comment
@ user8754108 Это зависит от того, как создан ваш плагин, поэтому вам следует немного поискать раньше и задать новый вопрос с более подробной информацией. - person LoicTheAztec; 23.08.2019