Я настроил текст отложенного заказа на моем сайте woocommerce и также хотел бы добавить тот же текст в электронные письма с подтверждением заказа.
Например, у меня есть корзина и касса, которые отображают «В наличии» или «Сделано на заказ» в мета (вариант) для каждого продукта.
Чтобы получить результат, я добавил следующий код в файл шаблона cart.php
и аналогичный код в файл шаблона review-order.php
, чтобы он отображался на странице оформления заказа:
// Backorder notification.
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification made-to-order">' . esc_html__( 'Made-To-Order', 'woocommerce' ) . '</p>', $product_id ) );
}
else if ( !$_product->backorders_require_notification() && !$_product->is_on_backorder( $cart_item['quantity'] ) ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification made-to-order">' . esc_html__( 'Made-To-Order', 'woocommerce' ) . '</p>', $product_id ) );
}
else {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification in-stock">' . esc_html__( 'In Stock', 'woocommerce' ) . '</p>', $product_id ) );
}
Теперь я хочу, чтобы то же самое отображалось в моих электронных письмах с подтверждением заказа. Я особенно хочу, чтобы это было в электронных письмах клиентов, но электронные письма администратора тоже подходят.
Прямо сейчас любой обратно заказанный продукт отображается в мета-мете продукта как «Backordered: #», чтобы обозначить количество продуктов с обратным заказом.
Я хотел бы удалить эту отложенную метаданную и заменить ее той же логикой, которая используется на страницах корзины и оформления заказа, чтобы она отображала тот же статус запасов в электронных письмах.
Я знаю, что отложенная мета применяется из функции set_backorder_meta
в class-wc-order-item-product.php
, но я не хочу редактировать файл класса, так как он будет перезаписан обновлениями.
Я также не хочу просто менять текст, мне нужно изменить логику. Если я могу отключить set_backorder_meta от применения к электронным письмам, я думаю, что смогу подключиться к woocommerce_order_item_meta_end
или просто отредактировать файл шаблона email-order-items.php
(меня устраивает любой вариант).
Моя проблема в том, что я не могу проверить, есть ли элемент «backorders_require_notification» и / или «is_on_backorder».
Есть ли способ отключить мета-метаданные по умолчанию в подтверждении по электронной почте и добавить пользовательскую мета-мету, которая проверяет, находится ли продукт в отложенном заказе (и требует ли уведомление о невыполнении заказа), а затем отображать пользовательский текст?