У меня есть сайт WordPress, и я использую плагин woocommerce для своего интернет-магазина.
Я хочу добавить кнопку «Отменить заказ» или ссылку в электронном письме с подтверждением заказа woocommerce, которое будет отправлено пользователю.
Я искал и обнаружил, что мне нужно
1) Переопределить пользовательский шаблон электронной почты WooCommerce
- Сначала убедитесь, что в каталоге существует следующий каталог. Установка WordPress: wp-content / themes / your-theme / woocommerce / emails.
- Затем скопируйте файл, найденный в wp-content / plugins / woocommerce / templates / emails / ..., в тему магазина по адресу: your-theme / woocommerce / emails /.
- Наконец, отредактируйте your-theme / woocommerce / emails /...
2) Условная настройка с помощью действий / фильтров
- Наиболее эффективный подход к настройке электронной почты - это работа с пользовательским кодом WooCommerce. Это, очевидно, требует высокого уровня знаний в PHP.
Имя крючка: woocommerce_get_cancel_order_url - генерирует URL, чтобы клиент мог отменить свой (неоплачиваемый - ожидающий) заказ.
Iдумаю, что мне нужно что-то вроде приведенного ниже кода, но я так растерялся ...
// Add cancel order link on order confirmation email when status is
processing
function add_cancel_order_link($status, $sent_to_admin ) {
$status= array( 'pending', 'processing', 'on-hold', 'failed' );
$string = WC_Order::get_cancel_order_url( $redirect );
if ( ! $sent_to_admin ) {
if ( $status->processing) {
echo '<p><a href="$string">Cancel order link</a></p>';
}
}
}
add_action( 'woocommerce_email_footer','add_cancel_order_link', 10, 2 );
Код для функции get_cancel_order_url находится в названии исходного файла: woocommerce / includes / class-wc-order.php
public function get_cancel_order_url( $redirect = '' ) {
return apply_filters(
'woocommerce_get_cancel_order_url',
wp_nonce_url(
add_query_arg(
array(
'cancel_order' => 'true',
'order' => $this->get_order_key(),
'order_id' => $this->get_id(),
'redirect' => $redirect,
),
$this->get_cancel_endpoint()
),
'woocommerce-cancel_order'
)
);
}
Есть идеи?