Добавить дополнительную информацию Woocommerce ордера редактировать страницы в админке
Привет, я использую Woocommerce версии 3.2.6. У нас есть несколько заказов.
Я хочу добавить одну дополнительную информацию к заказам, когда product id
является 123
на странице редактирования заказа в WordPress Backend.
Я хочу добавить это:
<a href="http://example.com/new-view/?id=<?php echo $order_id?;>">Click here to view this</a>
То есть: у нас есть заказ [идентификатор заказа = 3723], и идентификатор заказанного элемента составляет 123.
Затем в http://example.com/wp-admin/post.php?post=3723&action=edit
Я хочу добавить следующую ссылку ниже соответствующих деталей товара:
"<a href="http://example.com/new-view/?id=<?php echo $order_id?;>">Click here to view this</a>"
Как мы можем это сделать?
Какой крючок подходит для этого. На самом деле я ищу в https://docs.woocommerce.com/wc-apidocs/hook-docs.html.
И я нашел класс WC_Meta_Box_Order_Items
, Но я не знаю, как это использовать.
2 ответа
Правильный код для WooCommerce версии 3+ для добавления настраиваемой ссылки сразу после позиций и только в бэкэнде:
add_action( 'woocommerce_after_order_itemmeta', 'custom_link_after_order_itemmeta', 20, 3 );
function custom_link_after_order_itemmeta( $item_id, $item, $product ) {
// Only for "line item" order items
if( ! $item->is_type('line_item') ) return;
// Only for backend and for product ID 123
if( $product->get_id() == 123 && is_admin() )
echo '<a href="http://example.com/new-view/?id='.$item->get_order_id().'">'.__("Click here to view this").'</a>';
}
Проверено и работает
1) Важно: ограничивайте код для элементов заказа только типом "позиция", чтобы избежать ошибок в других элементах заказа, таких как "доставка", "сбор", "скидка"...
2) Из
WC_Product
объект, чтобы получить идентификатор продукта, который вы будете использоватьWC_Data
get_id()
метод.3) Получить идентификатор заказа от
WC_Order_Item_Product
объект, который вы будете использоватьWC_Order_Item
методget_order_id()
,4) Вам нужно добавить
is_admin()
вif
оператор для ограничения отображения в бэкэнде.
Элементы заказа Meta Box использует html-order-items.php
перебирать элементы заказа, которые в свою очередь используют html-order-item.php
для отображения каждого элемента.
Для вашей цели вы должны заглянуть внутрь html-order-item.php
для точного места, где вы хотели бы вставить свой фрагмент кода.
Я предполагаю woocommerce_after_order_itemmeta
Действие ловушка идеальна, поскольку она покажет ссылку чуть ниже мета-информации об элементе. (Если вы хотите отобразить ссылку до мета элемента, чем использовать woocommerce_before_order_itemmeta
.)
add_action( 'woocommerce_after_order_itemmeta', 'wp177780_order_item_view_link', 10, 3 );
function wp177780_order_item_view_link( $item_id, $item, $_product ){
if( 123 == $_product->id ) {
echo "<a href='http://example.com/new-view/?id=" . $order->id . "'>Click here to view this</a>";
}
}