web-dev-qa-db-ja.com

scribuのPosts to Postsプラグインを使ってwp_user_queryにeach_connected - 別の方法?

私はしばらく前からScribuのPosts to Postsプラグインを使用してきましたが、それは私によく役立ちました。私は完全なwikiとissueのリストを読んだことがありますが、each_connectedを取得している間に多くのユーザーをループするための明確な方法があるならば、決定的な答えを見つけることができません。

によると、このwikiのエントリ は、ループの内側に接続するためのより速い方法は、each_connectedを使うことです。ループの。意味があり、さまざまな型のpostsに最適です。しかし、wp_querywp_user_queryの間の類似点にもかかわらず、この種のことはうまくいきません(しかし、代わりにwp_queryにいたならうまくいくでしょう):

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

このような接続foreach($players as $player)で実行すると...

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

これは絶対に機能しますが、私は200人以上のユーザーを処理しているので非常に非効率的です。


だから、問題は、each_connected()wp_user_query()に適用して、何百もの追加クエリを行わないようにする方法を誰かが知っているかということです。

更新:

答えは「いいえ」のようです。これによると: https://github.com/scribu/wp-posts-to-posts/issues/374 - だから方法があるかもしれません自分でSQLを書くには?私はそれでかなりぐらつきます。

3
GhostToast

いいえ、それはここに示されるように、p2pプラグインへの修正なしでは不可能です:

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

関連するコードはこちらです。

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

2
Tom J Nowell