Je crée une liste de tous les utilisateurs dans wordpress. Pour cela, j'utilise WP_User_Query avec meta_query afin de ne pouvoir afficher que les utilisateurs filtrés. Je suis bloqué là où je veux ajouter des filtres de requête personnalisés dans SELECT
p.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
* COS(RADIANS(mt30.meta_value ))
* COS(RADIANS(p.longpoint) - RADIANS(mt31.meta_value))
+ SIN(RADIANS(p.latpoint))
* SIN(RADIANS(mt30.meta_value)))) AS distance
et une jointure personnalisée
SELECT '.$_REQUEST['user_lat'].' AS latpoint, '.$_REQUEST['user_long'].' AS longpoint,
'.$_REQUEST['geo-radius'].'.0 AS radius, 111.045 AS distance_unit
) AS p ON 1=1
et une condition WHERE personnalisée
AND (mt30.meta_value
BETWEEN p.latpoint - (p.radius / p.distance_unit)
AND p.latpoint + (p.radius / p.distance_unit)
AND mt31.meta_value
BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint)))))
et coutume ayant clause
having distance < $_REQUEST['geo-radius']
Je sais que nous ajoutons des filtres de requête pour les POSTS mais je ne peux pas ajouter de filtres de requête pour les UTILISATEURS.
Merci de me guider ou toute URL de référence.
Merci
Le crochet pre_user_query action de WordPress vous permettra de modifier les instructions SQL de l’objet WP_User_Query avant leur exécution sur la base de données. Notez qu'il s'agit d'une action et non d'un filtre. Il n'est donc pas nécessaire de renvoyer le $user_query
qui est transmis.
add_action( 'pre_user_query', 'add_my_custom_queries' );
function add_my_custom_queries( $user_query ) {
$user_query->query_fields .= ', my_custom_field '; // additional fields
$user_query->query_from .= ' INNER JOIN my_table '; // additional joins here
$user_query->query_where .= ' AND field='value' '; // additional where clauses
$user_query->query_orderby .= ' ORDER BY my_custom_field '; // additional sorting
$user_query->query_limit .= ''; // if you need to adjust paging
}