Я использую MailGun API для отправки Пакетной электронной почты.Я использую WP_Query для создания запроса, который на самом деле представляет собой список электронных писем, которые должны быть уведомлены о новых публикациях вакансий.
Эти электронные письма извлекаются на основе соответствующей категории.Например, если задание опубликовано в категориях A, B и Z, то должны быть уведомлены о резюме / кандидатах с категориями A, B и Z (по крайней мере, любой из этих соответствующих категорий).
Проблема заключается в отправке электронной почты MailGunкоторый имеет предел 1000.
Я пробовал с приведенным ниже кодом и похоже, что он работает, но не полностью.Это должно показать больше данных.И мне нужны предложения, если это можно сделать более лучшим способом.
Я использую MailGun API только потому, что он имеет возможность отправлять 1000 электронных писем / сессий, поэтому, если мы используем wp-mail, то страница умрет илибаза данных не так эффективна в обработке.
Я могу с уверенностью сказать, что мой код плохо написан : -D
Пожалуйста, смотрите ниже мой код и предлагайте улучшения.Также этот код я добавил непосредственно в файл шаблона плагина job-submit.php
Вот код:
$job_term_list = wp_get_post_terms($job->ID, 'job_listing_category', array("fields" => "names"));
$job_skills = implode(',',$job_term_list);
$tax_terms = get_terms('resume_function', array('hide_empty' => true));
foreach($tax_terms as $term_single) $resume_cat_name[] = $term_single->name;
$result=array_intersect($resume_cat_name,$job_term_list);
$fin_result=implode(',',$result); //Matched posted skills
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => array( 'resume' ),
'post_status' => array( 'publish' ),
'has_password' => false,
'nopaging' => false,
'paged' => $paged,
'posts_per_page' => '10',
'ignore_sticky_posts' => false,
'order' => 'DESC',
'orderby' => 'title',
'resume_function' => $fin_result,
);
$query = new WP_Query( $args );
$total = $query->found_posts;
if ($total < 1000){
$paged = 1;
$post_per_page = '1000';
}
else{
$paged = ceil($total / 1000) ;
$post_per_page = $paged.'000';
}
$args_two = array(
'post_type' => array( 'resume' ),
'post_status' => array( 'publish' ),
'has_password' => false,
'nopaging' => false,
'paged' => $paged,
'posts_per_page' => $post_per_page,
'ignore_sticky_posts' => false,
'order' => 'DESC',
'orderby' => 'title',
'resume_function' => $fin_result,
);
$query_two = new WP_Query( $args );
if ( $query->have_posts() OR $query_two->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$post_id = get_the_ID();
$candidate_name = get_post_meta( $post_id, '_candidate_name', true );
$candidate_email = get_post_meta($post_id, '_candidate_email', true);
if($candidate_email){
*** HERE I WILL ADD MAILGUN CURL FUNCTIONALITY FOR BATCH EMAIL ****
}
}
while ( $query_two->have_posts() ) {
$query_two->the_post();
$post_id = get_the_ID();
$candidate_name = get_post_meta( $post_id, '_candidate_name', true );
if($candidate_email){
*** HERE ALSO I WILL ADD MAILGUN CURL FUNCTIONALITY FOR BATCH EMAIL ****
}
}
}
wp_reset_postdata();