Как узнать, когда в WooCommerce создается купон? - PullRequest
0 голосов
/ 04 июня 2018

Я пишу собственный плагин, и мне нужно автоматически отправлять информацию о каждом вновь созданном купоне.До сих пор я могу выбрать только определенный купон по его имени (например, 1234):
$coupon = new WC_Coupon("1234");

Но я не могу найти способ получить купон сразу после его создания, не зная его имениили, по крайней мере, как получить все доступные купоны.Может кто-нибудь помочь?

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Попытайтесь использовать пользовательский тип записи или напрямую запрос MySQL.

1) Используя запрос MySQL

            // Run a query on the postmeta table to get the id of every coupon that has the email in the customer_email restrictions
              $couponlist = $wpdb->get_results("SELECT 
                             `wp_postmeta`.`post_id`
                              FROM `wp_postmeta`
                             WHERE `wp_postmeta`.`meta_key` LIKE 'customer_email'
                              AND `wp_postmeta`.`meta_value` LIKE '%".$email."%'");
           $couponarrayfinal = array( );  //Create an array of the ids so we can use wp_query to more quickly grab the data

          // Add the ids to the array in a foreach loop
             foreach( $couponlist as $key => $row) {

                 $value = $row->post_id;
                 $couponarrayfinal[] = $value ;
                 }

2) Используя метод get_posts

       $arg = array(
'posts_per_page'   => -1,
'orderby'          => 'title',
'order'            => 'asc',
'post_type'        => 'shop_coupon',
'post_status'      => 'publish');

     $coupons_list = get_posts( $arg );
0 голосов
/ 04 июня 2018

Попробуйте с этим вы получите все данные

// WP_Query arguments
$args = array(
    'post_type' => array('shop_coupon'),
    'post_status' => array('publish'),
    'posts_per_page' => '-1',
    'order' => 'DESC',
    'orderby' => 'id',
);

// The Query
$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        // do something

        $coupon = new WC_Coupon(get_the_ID());
        $coupnCode = $coupon->code;
        $coupnAmount = $coupon->amount;
        $minAmount = wc_format_decimal($coupon->minimum_amount, 2);
        $maximumAmount = wc_format_decimal($coupon->maximum_amount, 2);
        $expire = $coupon->expiry_date;

    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();
0 голосов
/ 04 июня 2018

Может быть, это может помочь.Проверено и работает.Это вернет все купоны, так как купоны сохраняются как post_type shop_coupon.

$args = array(
    'posts_per_page'   => -1,
    'orderby'          => 'title',
    'order'            => 'asc',
    'post_type'        => 'shop_coupon',
    'post_status'      => 'publish',
);

$coupons = get_posts( $args );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...