在使用WP_Query添加帖子之前,如何检查post_meta中的元数据

时间:2019-06-07 10:32:59

标签: wordpress

我想在将帖子添加到数据库之前检查电子邮件和位置是否存在。如果存在,则终止该过程。 在代码中,一封电子邮件只能对一个位置进行评分。如果我删除了检查电子邮件和位置的代码行,则成功插入了详细信息。但是当我添加WP_Query以检查我的参数时,服务器将返回500错误作为响应。

    $name = sanitize_text_field($_POST['name']);
    $email = sanitize_email($_POST['email']);
    $loca = sanitize_text_field($_POST['location']);
    $ratings = sanitize_text_field($_POST['rating_star']);
    $message = sanitize_textarea_field($_POST['message']);

$data = array(
    'name' => $name,
    'email' => $email,
    'location'=>$loca,
    'ratings'=>$ratings,
    'approved' => 1,
    'featured' => 1,
);
$args = array(
    'post_title' => 'Testimonial from ' . $name,
    'post_content' => $message,
    'post_author' => 1,
    'post_status' => 'publish',
    'post_type' => 'testimonial',
'meta_input' => array(
    '_rating_testimonial_key' => $data
)

);

$args1 = array(
'post_type' => 'testimonial',
'post_status' => 'publish',
'posts_per_page' => 5,
'meta_query' => array(
    'relation' => 'AND',
    array(
        'key' => '_rating_testimonial_key',
        'value' => 's:5:"email";s:'.strlen($email).':"'.$email.'";',
        'compare' => 'REGEXP'
    ),
    array(
        'key' => '_rating_testimonial_key',
        'value' => 's:8:"location";s:'.strlen($location).':"'.$location.'";',
        'compare' => 'LIKE'
    )
)
);
$query1 = new WP_Query( $args1 );
if (empty($query1->have_posts())){
    $postID = wp_insert_post($args);
}

if ($postID) {
    return $this->return_json('success');
}
 return $this->return_json('error');

0 个答案:

没有答案