web-dev-qa-db-fra.com

each_connected dans wp_user_query avec le plugin Posts to Posts de Scribu - Méthode alternative?

J'utilise le plugin Posts to Posts de Scribu depuis un certain temps et il m'a bien servi. J'ai lu l'intégralité du wiki et de la liste des problèmes, mais je ne peux trouver aucune réponse définitive s'il existe un moyen propre de parcourir en boucle de nombreux utilisateurs tout en obtenant each_connected.

Selon cette entrée de wiki , le moyen le plus rapide d’obtenir des connexions dans une boucle est d’utiliser each_connected, pour éviter d’avoir une seconde requête dans chaque itération. de la boucle. Cela a du sens et fonctionne très bien pour posts de différents types. Mais malgré les similitudes entre wp_query et wp_user_query, ce genre de chose ne fonctionne pas (mais fonctionnerait si nous étions dans un wp_query à la place):

$players = new WP_User_Query( array( 'role' => 'subscriber' ) );
p2p_type( 'player_report_to_user' )->each_connected( $players );

Si je lance ce genre de connexion dans la foreach($players as $player) ...

$reports = get_posts( array(
    'connected_type' => 'player_report_to_user',
    'connected_items' => $player->ID,
    'suppress_filters' => false,
    'nopaging' => true
) );

Cela fonctionne absolument, mais est très inefficace, car plus de 200 utilisateurs sont en cours de traitement.


La question est donc la suivante: quelqu'un connaît-il une méthode permettant d'appliquer each_connected() à wp_user_query() afin d'éviter des centaines de requêtes supplémentaires?

Mettre à jour:

Il semble que la réponse est "non" en fonction de ceci: https://github.com/scribu/wp-posts-to-posts/issues/374 - Il pourrait donc y avoir un moyen écrire le SQL moi-même? Je suis assez fragile à cela.

3
GhostToast

Non, ce n'est pas possible sans modifications du plugin p2p, comme indiqué ici:

https://github.com/scribu/wp-posts-to-posts/issues/374

Le code pertinent est ici:

https://github.com/scribu/wp-posts-to-posts/blob/master/core/connection-type.php#L374

2
Tom J Nowell