Добавьте код заказа под пользовательским номером заказа Woocommerce на странице редактирования заказа - PullRequest
1 голос
/ 19 июня 2019

Мы используем плагин Booster, который создает уникальный номер заказа WooCommerce, например WC-456544646.Теперь мне нужно добавить оригинальный идентификатор заказа, который все еще работает в фоновом режиме, и с API WooCommerce.

Booster предоставляет шорткод для исходного идентификатора заказа [wcj_order_id]

Вот HTML-код дляПользовательский номер заказа Woo на странице редактирования заказа.

<h2 class="woocommerce-order-data__heading">
Order #WC-63872414 details</h2>

enter image description here

Как вставить шорткод на страницу редактирования заказа?

(Woocommerce / Заказы / [Выбрать заказ / Детали заказа] например, /post.php?post=638&action=edit

1 Ответ

1 голос
/ 19 июня 2019

Я посмотрел на код плагина Booster.Он использует фильтр фильтра woocommerce_order_number для замены идентификатора заказа на странице заказа и заказов WC.В /woocommerce-jetpack/includes/class-wcj-order-numbers.php:

add_filter( 'woocommerce_order_number', array( $this, 'display_order_number' ), PHP_INT_MAX, 2 );

Так как он не передает экземпляр $ ни WCJ_Order_Numbers, ни WC_Jetpack классов ни в один хук действия, чтобы удалить этот текст и использоватьпользовательский, мы не можем использовать функцию remove_filter.Таким образом, чтобы переопределить плагин Booster, нам нужно подключить другую функцию к woocommerce_order_number.

Чтобы добавить WC order_id на страницы заказа администратора:

add_action( 'admin_init', 'append_wc_order_id');
function append_wc_order_id()
{
    add_filter('woocommerce_order_number', 'filter_wc_order_id', PHP_INT_MAX);
    function filter_wc_order_id($order_id)
    {
        /* If you are using 'init' action hook, uncomment bellow line to apply this code only to your admin pages: */
        //if (!is_admin()) return $order_id;
        return $order_id . ' | #' . do_shortcode('[wcj_order_id]');
    }
}

Этот код идетв functions.php файл вашей темы.
Проверено и Wordking :

Screenshot

Примечания:
1. Хук-фильтр в коде Booster использует приоритет PHP_INT_MAX, поэтому для его переопределения мы не можем использовать больший целочисленный приоритет.Поэтому я использовал действие admin_init, чтобы подключить свою функцию к woocommerce_order_number, после того, как другие плагины сделали свою работу.Он может функционировать, как вы ожидали, без использования хуков инициализации, но это не гарантировано.Вы можете использовать init hook вместо admin_init, чтобы добавить WC order_id также на внешнюю сторону вашего сайта (например, страницу «Моя учетная запись»).Прочитайте комментарии внутри кода.
2. Чтобы удалить идентификатор заказа, сгенерированный плагином Booster, на страницах администратора, вы можете изменить эту строку:

return $order_id . ' | #' . do_shortcode('[wcj_order_id]');

на:

return do_shortcode('[wcj_order_id]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...