Я посмотрел на код плагина 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 :
Примечания:
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]');