Условно удалить раздел деталей заказа в Woocommerce - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу удалить таблицу сведений о заказе в WooCommerce в моем functions.php, если утверждение if верно.Я много искал, но не знаю, как это сделать.

Вот как файл включен в WooCommerce wc-template-functions.php:

if ( ! function_exists( 'woocommerce_order_details_table' ) ) {

    /**
     * Displays order details in a table.
     *
     * @param mixed $order_id Order ID.
     */
    function woocommerce_order_details_table( $order_id ) {
        if ( ! $order_id ) {
            return;
        }

        wc_get_template( 'order/order-details.php', array(
            'order_id' => $order_id,
        ) );
    }
}

Так что янужно что-то вроде этого:

if ( value != true ) {
    hide_order_details();
}

Ответы [ 2 ]

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

Обновлено (при желании показывается информация о клиенте)

Вы можете просто использовать следующую перехваченную функцию (которая имеет $order_id в качестве доступного аргумента) с вашим условием в операторе if (где вы определите $value)

Следующая таблица удалит таблицу сведений о заказе в разделе Моя учетная запись> Просмотреть заказ:

add_action( 'woocommerce_view_order', 'custom_action_view_order', 5, 1 );
function custom_action_view_order( $order_id ){
    $value = false;

    if( ! $value ){
        remove_action( 'woocommerce_view_order', 'woocommerce_order_details_table', 10 );

        ## ----- Optionally show customer details (if needed) ----- ##

        if ( ! $order = wc_get_order( $order_id ) ) {
            return;
        }

        if( is_user_logged_in() ){
            wc_get_template( 'order/order-details-customer.php', array( 'order' => $order ) );
        }
    }
}

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

1) С данными клиента:

enter image description here

2) Без клиентадетали:

enter image description here

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

Из того, что я вижу, нет крючка, который вы можете использовать в шаблоне.

Но вы можете легко переопределить шаблон order/order-details.php в своей теме, чтобы добавить условие о том, выводить таблицу подробностей или нет.

Соответствующий шаблон находится в woocommerce/templates/order/order-details.php.Вы можете скопировать его в your-theme/woocommerce/templates/order/order-details.php и внести необходимые изменения.

Таким образом, вы не редактируете оригинальные файлы Woocommerce и используете правильный способ переопределения выходных данных woocommerce.Проверьте шаблон order-details самостоятельно, вы увидите, что здесь нет хука, позволяющего предотвратить вывод таблицы.Но простая оболочка if с вашим условием вокруг кода <table> должна сработать.

Редактировать: кажется, что фильтр woocommerce_order_item_visible, используемый в шаблоне order-details-item.php, может помочь вам предотвратить отображение некоторых строк в таблице сведений о заказе.Но шаблон вызывается в таблице подробностей заказа html, поэтому вы не можете полностью удалить таблицу, используя его.

Примечание: я не уверен, используется ли эта часть шаблона где-то еще.В этом случае вы должны добавить в свое состояние отображения, чтобы проверить, является ли фактическая страница той, к которой вы хотите применить изменения (подробности заказа на панели пользователя).Если шаблон используется где-то еще, он будет применять ваши изменения в каждом месте, где используется этот шаблон.

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