Редактирование моего аккаунта Заказать просмотр страниц в WooCommerce - PullRequest
1 голос
/ 04 апреля 2019

На страницах WooCommerce моего аккаунта "Просмотр заказа" я должен добавить визуальное отслеживание, например:
enter image description here

На реальных страницах, чтобы отслеживать всепорядок, выше детали заказа:

enter image description here

  1. 1-я проблема заключается в том, что я не знаю, как добавить HTML и PHP-код впросмотр страницы заказа. Я попытался добавить зацепки на functions.php, но это не сработало

  2. 2-я проблема заключается в том, что я хочу получить статус каждого заказа на странице просмотра заказа (например: обработкаили доставлено и т. д.)

Вот мой код functions.php, чтобы попытаться его достичь:

    // **
//  * Add custom tracking code to the view order page
//  */
add_action( 'woocommerce_view_order', 'my_custom_tracking' );
function my_custom_tracking(){
    $order = wc_get_order( $order_id );

    $order_id  = $order->get_id(); // Get the order ID
    $parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…)

    $user_id   = $order->get_user_id(); // Get the costumer ID
    $user      = $order->get_user(); // Get the WP_User object

    echo $order_status  = $order->get_status(); // Get the order status 
}

1 Ответ

1 голос
/ 04 апреля 2019

В вашем коде есть некоторые ошибки:

  1. Переменная $ order_id уже включена в качестве аргумента функции для этого хука, , но отсутствует в вашем коде.
  2. Вы не можете использовать echo с $order_status = $order->get_status();

Поэтому попробуйте вместо этого:

add_action( 'woocommerce_view_order', 'my_custom_tracking' );
function my_custom_tracking( $order_id ){
    // Get an instance of the `WC_Order` Object
    $order = wc_get_order( $order_id );

    // Get the order number
    $order_id  = $order->get_order_number();

    // Get the formatted order date created
    $order_id  = wc_format_datetime( $order->get_date_created() );

    // Get the order status name
    $order_id  = wc_get_order_status_name( $order->get_status() );

    // Display the order status 
    echo '<p>' . __("Order Status:") . ' ' . $order_status . '</p>';
}

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


Если вы хотите изменить текст с желтым подчеркиванием на втором снимке экрана, вам нужно будет внести изменения в myaccount/view-order.php файл шаблона:

  1. Первое чтение официальная документация для понимания "Как переопределить шаблоны с помощью темы" .
  2. После того, как сделано и скопированоШаблоны WooCommerce для вашей активной темы, как описано в документации, откройте файл редактирования myaccount/view-order.php.
  3. Изменения вносятся в строки от 26 до 34:

    <p><?php
        /* translators: 1: order number 2: order date 3: order status */
        printf(
            __( 'Order #%1$s was placed on %2$s and is currently %3$s.', 'woocommerce' ),
            '<mark class="order-number">' . $order->get_order_number() . '</mark>',
            '<mark class="order-date">' . wc_format_datetime( $order->get_date_created() ) . '</mark>',
            '<mark class="order-status">' . wc_get_order_status_name( $order->get_status() ) . '</mark>'
        );
    ?></p>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...