Использование ajax для вызова функции php, внутри этой функции вызывается другая функция, которая не запускается - PullRequest
0 голосов
/ 25 сентября 2018

Я использую ajax во внешнем интерфейсе для отправки фильтров wp_query ($ args) У меня есть функция в файле functions.php, называемая filter_function (), это то, что отправляет ajax.

Внутри filter_function ()У меня есть другая функция distance_haversine (), вызываемая в моем файле functions.php, но эта функция не будет работать внутри filter_function ()

Пример:

function distance_haversine($lat1, $lon1, $lat2, $lon2) {
      global $earth_radius;
      global $delta_lat;
      global $delta_lon;
      $alpha    = $delta_lat/2;
      $beta     = $delta_lon/2;
      $a   = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($lat1)) *           cos(deg2rad($lat2)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ;
      $c        = asin(min(1, sqrt($a)));
      $distance = 2*$earth_radius * $c;
      $distance = round($distance, 4);

      return $distance;

}


function filter_function(){

if ( isset( $_POST['distance_miles']  ) ) { 

  $distance_miles  = $_POST['distance_miles'];

} else {

   $distance_miles  = 50;

}



$args = array(
    'orderby' => 'date', 
    'order' => $_POST['date'], 
    'post_type' => 'product', 
    'posts_per_page' => -1,
    's' => $_POST['search'],
);

$query = new WP_Query( $args );

if( $query->have_posts() ) :
    while( $query->have_posts() ): $query->the_post();
      $event_lat     = get_post_meta(get_the_ID(),'prod-lat',true);
      $event_long    = get_post_meta(get_the_ID(),'prod-lng',true);
      $full_location = get_post_meta(get_the_ID(),'prod-full-address',true); 
      $earth_radius = 3960.00; # in miles
      $lat_1 = $event_lat;
      $lon_1 = $event_long;
      $lat_2 = $user_lat;
      $lon_2 = $user_long;
      $delta_lat = $lat_2 - $lat_1;
      $delta_lon = $lon_2 - $lon_1;

    //$lat_1, $lon_1, $lat_2, $lon_2 all have values

    $hav_distance = distance_haversine($lat_1, $lon_1, $lat_2, $lon_2);//this is not working

    var_dump($hav_distance); //<------**This is outputing "float(0)"**

    if ( $hav_distance <= $distance_miles ) { 

?>

<li>
    <a href="">              
        <?php if ( has_post_thumbnail() ) { ?>
            <?php the_post_thumbnail('thumbnail'); ?>        
        <?php } else { ?>
            <img src="/place-holder.jpeg">
        <?php  }; ?>                
    </a>
</li>

<?php }

  endwhile;

    wp_reset_postdata();

  else :

    echo 'No posts found';

  endif;

  die();
}

1 Ответ

0 голосов
/ 25 сентября 2018

попробуйте

function filter_function(){
      global $earth_radius;
      global $delta_lat;
      global $delta_lon;
.....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...