Woocommerce: специальный параметр $ _GET (ссылка в письме с новым заказом) для обновления статуса заказа Woocommerce - PullRequest
0 голосов
/ 28 мая 2020

Когда пользователь делает заказ, заказ устанавливается в режим ожидания, и в магазин отправляется электронное письмо с новым заказом со ссылкой для подтверждения заказа. Я могу добавить ссылку, но не могу изменить статус заказа (до обработки) в Woocommerce, когда я нажимаю ссылку в электронном письме.

Вот как я добавляю ссылку в электронное письмо (эта часть работает)

add_action( 'woocommerce_email_order_meta', 'ct_add_link_to_new_order__email', 20, 4 );

function ct_add_link_to_new_order__email( $order, $sent_to_admin, $plain_text, $email ) {
   if ( $email->id == 'new_order' ) {

      $link = '<p>';

      $link .= '<a href="'. get_site_url() .'/order/s='. absint( $order->id ) .'" >';

      $link .= pll__( 'Click here to go confirm the order' );

      $link .= '</a>';

      $link .= '</p>';

     echo $link;


   }
}

Вот как я думал, что получу параметр и изменю статус заказа

add_action( 'init', 'ct_confirm_order');
function ct_confirm_order(){
      if ( isset( $_GET['s'] ) ){
         $order_id = intval( $_GET['s'] );
         $order = new WC_Order($order_id);
         $order = wc_get_order( $order_id );
         $order->update_status( "processing" );
         return;
         }   
}

Когда я нажимаю ссылку, я получаю страницу 404, не существует (я создал страницу заказа) и статус не изменился.

1 Ответ

0 голосов
/ 29 мая 2020

вы не можете просто использовать суперглобальный $ _GET для получения нашей переменной запроса

Вместо этого вам нужно получить доступ к свойству query_vars объекта $ wp_query.

if(isset($wp_query->query_vars['s'])) {
 $sMsdsCat = urldecode($wp_query->query_vars['s']);
}

вам также понадобится чтобы сообщить WordPress, как заполнить эту переменную запроса

function add_rewrite_rules($aRules) {
 $aNewRules = array('order/([^/]+)/?$' => 'index.php?pagename=order&s=$matches[1]');
 $aRules = $aNewRules + $aRules;
 return $aRules;
}

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