Wordpress 按距离分类商业产品
我正在开发一个WooCommerce多供应商网站,需要能够根据与网站访问者的距离对产品进行排序Wordpress 按距离分类商业产品,wordpress,woocommerce,Wordpress,Woocommerce,我正在开发一个WooCommerce多供应商网站,需要能够根据与网站访问者的距离对产品进行排序 我对目录中的每种产品都存储了纬度和经度值 我知道来访者的经纬度 我知道计算两者之间距离的公式 我的想法是在WooCommerce返回的产品中添加一个别名字段,可能使用WooCommerce\u product\u查询钩子,该钩子包含与站点访问者的距离,然后在该别名字段上排序。我知道如何在SQL中实现这一点,例如: 选择*,{计算距离的公式}作为距离{表}按距离排序 但是我不知道如何使用WooCom
- 我对目录中的每种产品都存储了纬度和经度值
- 我知道来访者的经纬度
- 我知道计算两者之间距离的公式
如果有任何帮助,我将不胜感激。因此,在本文的帮助下,我终于明白了这一点: 要向WP_查询添加额外的别名字段,您需要连接到posts_字段,该字段允许您修改正在进行的查询的选择部分,例如:
function my_posts_fields( $fields, $query ) {
$userlat = {Users Lat};
$userlong = {Users Long};
$destlat = {Destination Lat};
$destlong = {Destination Long};
$fields .= sprintf(",( 3959 * acos( cos( radians( %f ) ) * cos( radians( %f ) ) * cos( radians( %f ) - radians( %f ) ) + sin( radians( %f ) ) * sin( radians( ".$wpdb->prefix."gmw_locations.latitude ) ) ) ) ) AS distance", $destlong, $userlat, $destlat, $destlong, $userlong, $userlat, $destlat);
return $fields;
}
add_filter('posts_fields', 'my_posts_fields', 10, 2);
然后,要在这个新字段上排序,您需要连接到posts\u orderby,它允许您按查询的一部分修改顺序,例如
function my_posts_orderby( $orderby, $query ) {
$orderby = "distance ASC";
return $orderby;
}
add_filter('posts_join', 'my_posts_join', 10, 2);
您将需要添加一些代码,以便仅将字段应用于希望应用它的帖子类型,但要点如上所述