web-dev-qa-db-fra.com

Comment ajouter des filtres de requête personnalisés dans WP_User_Query

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

1
avinashphp

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

}
4
Pete Nelson