meta查询不返回任何结果

cwtwac6a  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我正在为一家公司做一个“查找经销商”查找,这样用户就可以输入一个邮政编码和一个半径,并找到该半径内的所有经销商。
在我拿到几千个邮政编码之前,一切都很顺利。
我正在将邮政编码数组传递给 meta_query 并对照我的自定义邮件类型进行检查 dealer 用它的 keyzip 查找包含邮政编码的所有经销商 $zip_array .

<?php
  // This takes in a zip code and returns all zip codes in a specific radius
  // using the zip code api: https://www.zipcodeapi.com/API#radius
  $api_root   = 'https://www.zipcodeapi.com/rest';
    $api_key    = $ZIP_CODE_API_KEY;
    $zip_radius = isset($_POST['radius']) ? $_POST['radius'] : 25;
    $zip_code   = $_POST['zip'];
    $type       = isset($_POST['type']) ? $_POST['type'] : array('architectural','auto','safety-security');

    $api_url    = $api_root.'/'.$api_key.'/radius.json/'.$zip_code.'/'.$zip_radius.'/miles?minimal';

    $curl = curl_init($api_url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $curl_response = curl_exec($curl);
    if ($curl_response === false) {
    $info = curl_getinfo($curl);
    curl_close($curl);
    die('error occured during curl exec. Additional info: ' . var_export($info));
    }

// Because all zip codes come back as strings, we set up an array to push 
// the new zip code integers into
$zip_array = array();

// Decode response for easy looping
$curl_response = json_decode($curl_response);

// var_dump($curl_response);

// Change zip code strings to integers and push into zip_array
foreach ($curl_response as $zipcode) {
    foreach ($zipcode as $the_zip) {
        array_push($zip_array, intval($the_zip));
    }
}

 $meta_query_args = array(
    'post_type'      => 'dealer',
    'posts_per_page' => -1,
    'meta_query'     => array(
        array(
            'key'     => 'zip',
            'value'   => $zip_array,
            'compare' => 'IN',
            'type'    => 'NUMERIC'
        )
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'types',
            'field'    => 'slug',
            'terms'    => $type
        )
    )
);
$meta_query = new WP_Query( $meta_query_args );

  ?>

在那之后,我只是在做标准 loop 以及 HTML 并在页面上显示所有经销商信息。api返回了所有应该返回的邮政编码,所有的东西都显示了,并且显示得很快,但是我注意到当我将radius设置为 100 miles ,对于美国东北部的一些邮政编码,它返回超过2500个邮政编码。
例如,19804在75英里处返回大约1200个邮政编码,并正确显示9个经销商。19804在100英里处返回约2200个邮政编码,显示循环点击 else 并说没有一家经销商的数据与之相符。
100英里以外的其他邮政编码仅返回1000左右,则返回数据并正确显示。
这是一个简单的情况下,必须检查太多的邮政编码或我的方式,这是完全不同的东西吗?

niknxzdl

niknxzdl1#

发现了问题。我查了wordpress debug.log 还有锯子 Query Killed . 在google上搜索了这个问题,并在 WP Engine 托管时,它们限制一定大小的查询。
所以,在 wp-config 我加了一行 define( 'WPE_GOVERNOR', false ); 这就取消了wp引擎的查询限制。

相关问题