Отображение в Woocommerce Orders Список пользователей, которым не удалось и количество отмененных заказов - PullRequest
0 голосов
/ 06 сентября 2018

Я добавил столбец в таблицу заказов (так он называется), и теперь я пытаюсь сначала подсчитать, сколько, если таковые имеются, неудачных и отмененных заказов, которые есть у пользователя, а затем отобразить эту сумму с помощью echo. Вот мой код, который показывает столбец, но отображает пустой столбец.

Любая помощь высоко ценится.

Код:

function add_failed_orders_column_to_order_page( $columns ) {

$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;

if ( 'order_total' === $column_name ) {
$new_columns['previous_failed_customer_orders'] = __( 'Failed Orders', 'ocean-child' );
} }
return $new_columns;
}
add_filter( 'manage_edit-shop_order_columns', 'add_failed_orders_column_to_order_page', 20 );



add_action( 'manage_shop_order_posts_custom_column' , 'display_previous_failed_orders', 10, 2 );
function display_previous_failed_orders( $order, $column )
{
    global $order;
    switch ( $column )
    {
        case 'previous_failed_customer_orders' :
         $failed_customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => $order->get_customer_id(),
        'post_type'   => 'shop_order',
        'post_status' => array('wc-cancelled', 'wc-failed'),
    ) );
$failed_orders_count = '<strong style="color:red !important; font-size:15px !important;">' . count($failed_customer_orders) . '</strong>'; {
                echo $failed_orders_count;
            }
            break;
    }
}

1 Ответ

0 голосов
/ 06 сентября 2018

В приведенном ниже коде используется очень простой и намного более легкий SQL-запрос для получения количества пользовательских заказов с отмененным и ошибочным статусом. Также есть некоторые ошибки в вашем коде.

Ваш повторный код:

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

    foreach ( $columns as $column_key => $column_label ) {

        $new_columns[$column_key] = $column_label;

        if ( 'order_total' === $column_key ) {
            $new_columns['cancelled_failled'] = __( 'Failed Orders', 'ocean-child' );
        }
    }
    return $new_columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'column_content_user_failled_cancelled', 10, 1 );
function column_content_user_failled_cancelled( $column ) {
    global $post, $the_order, $wpdb;

    if ( $column =='cancelled_failled' ) {

        // Get the count of the user failled and cancelled orders
        $count = $wpdb->get_var( "
            SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p
            JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
            WHERE p.post_type = 'shop_order' AND p.post_status IN ('wc-cancelled','wc-failed')
            AND pm.meta_key = '_customer_user' AND pm.meta_value = '{$the_order->get_customer_id()}'
        ");

        echo '<strong style="color:red !important; font-size:15px !important;">' . $count . '</strong>';
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...