2017-10-12 5 views
0

私は、さまざまなCPTの関連記事を返すために、半径ベースの位置検索を構築しようとしています。全体的なプロセスは機能しますが、私はfunction.phpファイル内の関数にパラメータの一部を渡すことに問題があります(フォームから取得しますが、関数に渡す方法はわかりません)。add_filterを通じて関数にパラメータを渡す

パラメータはlat lngとradiusです(現在functions.php内のコードに手動で書き込まれています)。

search.php

のfunctions.php

function location_posts_where($where) 
{ 
    global $wpdb; 

    $lat = '41.834536'; 
    $lng = '39.2440537479998'; 

    $radius = 60; 

    $where .= " AND $wpdb->posts.ID IN (SELECT post_id FROM wp_lat_lng_post WHERE 
     (3959 * acos(cos(radians(" . $lat . ")) 
         * cos(radians(lat)) 
         * cos(radians(lng) 
         - radians(" . $lng . ")) 
         + sin(radians(" . $lat . ")) 
         * sin(radians(lat)))) <= " . $radius . ")"; 

    return $where; 
} 
+0

$ wpdbを使用してカスタムSQLクエリを使用し、すべてのコードを1つのsearch.phpファイルに保存することができます。 https://codex.wordpress.org/Class_Reference/wpdb –

答えて

0

問題を適用し、フィルタを除去するステップでした。

wpdbフィルタは、クエリの開始後にのみ適用され、あまりに早く削除しました。クエリの終了後に移動すると問題が解決しました。

現在、パラメータをグローバルとして渡し、検索半径と高度を動的にすることができます。

関連する問題