Как ограничить триггер действием, которое удаляет переходные процессы в магазине woo commerce только при любых изменениях в продуктах? - PullRequest
0 голосов
/ 26 февраля 2019

Я разработал пользовательскую бесконечную прокрутку с переходным процессом и установил этот переходный процесс, который будет удаляться при создании, обновлении и удалении продуктов.Но я не хочу, чтобы это происходило при любых других изменениях в заказах или обычных сообщениях.Я ожидаю, что переходные процессы будут удалены только при массовых или обычных операциях CRUD с продуктами. Теперь это не работает в случае заказов или массового удаления сообщений.Вот мой код; -

function ga_delete_transients($post) {

  global $wpdb,$post;


 if(isset($post)&&$post->post_type=='product' || !isset($post)  ) {//doesn't work in case of bulk delete of posts



  $sql = "SELECT *  FROM ga_wp.wp_ga_options WHERE `option_name` LIKE ('%\_transient\_ga_loop_products_%')";
  $ga_transient_result = $wpdb->get_results($sql);
  if(!empty($ga_transient_result)){

      $wpdb->query( "DELETE   FROM ga_wp.wp_ga_options WHERE `option_name` LIKE ('%\_transient\_ga_loop_products_%')" );
  }

 }
 else{
   return;
 }

}

$all_actions = array('save_post','wp_delete_post','wp_trash_post');

foreach ($all_actions as $current_action) {

  add_action($current_action, 'ga_delete_transients',1);
}

1 Ответ

0 голосов
/ 26 февраля 2019

Я использовал глобальный $ post_type и вернулся, если это заказ, также проверил, возвращен ли только продукт.Таким образом, мои переходные процессы удаляются тогда и только тогда, когда речь идет о каком-либо виде (массовом или обычном) операции CRUD только для продуктов.Итак, моя проблема решена.Вот мой код: -

function ga_delete_transients($post) {

  global $wpdb,$post,$post_type;
  if($post_type == 'shop_order') {
    return;
   }

 if($post_type=='product' ) {



  $sql = "SELECT *  FROM ga_wp.wp_ga_options WHERE `option_name` LIKE ('%\_transient\_ga_loop_products_%')";
  $ga_transient_result = $wpdb->get_results($sql);
  if(!empty($ga_transient_result)){

      $wpdb->query( "DELETE   FROM ga_wp.wp_ga_options WHERE `option_name` LIKE ('%\_transient\_ga_loop_products_%')" );
  }

 }
 else{
   return;
 }

}

$all_actions = array('save_post','wp_delete_post','wp_trash_post');

foreach ($all_actions as $current_action) {

  add_action($current_action, 'ga_delete_transients',1);
}
...