Как добавить кнопку «Отменить заказ» в электронном письме с подтверждением заказа на сайте WordPress? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть сайт 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'
        )
    );
}

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...