コンテキスト:私はポストの人気度の指標としてメタフィールドを使用する人気のある投稿ウィジェットを作成しました。このウィジェットはソーシャルメディア共有プラグインにバンドルされています。一般的なネットワークの共有数を取得すると、その数がメタフィールドに格納されます。記事をソーシャルメディアで何回共有したかに基づいて人気のある投稿を表示するためにメタフィールドにクエリを実行できます。このカスタムWordPressループでは引数が使用されないのはなぜですか?
コードサンプル:これは私が使用しているコードのサンプルです。明らかに、コードのこの部分の後、私たちはwhileループを閉じ、条件をクローズし、クエリのデータをリセットします。このウィジェットファイルの完全な内容は、GitHubにあります:https://github.com/warfare-plugins/social-warfare/blob/master/functions/widgets.php下記の部分は、そのファイルの行330。
// If a custom timeframe is not being used....
if($timeframe == 0):
// Create the arguments for a query without a timeframe
$swp_args = array(
'posts_per_page' => $count,
'post_type' => 'post',
'meta_key' => '_'.$network,
'orderby' => 'meta_value_num',
'order' => 'DESC',
);
// If a custom timeframe is being used....
else:
// Create the arguments for a query with a timeframe
$swp_args = array(
'posts_per_page' => $count,
'post_type' => 'post',
'meta_key' => '_'.$network,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'date_query' => array(
'column' => 'post_date',
'after' => '- '.$timeframe.' days'
)
);
endif;
// Reset the main query
wp_reset_postdata();
// Query and fetch the posts
$swq = new WP_Query($swp_args);
// Begin the loop
if($swq->have_posts()) :
$i = 1;
while($swq->have_posts()):
$swq->the_post();
問題:私たちは、わずか5,000サイトでこのプラグインを持っています。しかし、少数のサイトでは、カスタムクエリを使用せず、代わりにデフォルトのWordPressクエリを使用します。このような場合、最新の投稿が返され、WordPressの1ページあたりの投稿数に基づいて投稿数が返されます。実際、たとえばあるサイトでは1ページで完璧に動作しますが、アーカイブ/カテゴリページでは、カスタムクエリの代わりにWordPressのデフォルトループを使用するようになります。
WordPressのクエリにいくつかのフックやその他の機能を追加した別のプラグインやテーマで、カスタム引数をオーバーライドしているのだろうかと思います。
これまでに試した唯一のことは、クエリの前後にwp_reset_postdata()を追加することですが、何も修正していないようです。
質問:このカスタムクエリを実行し、カスタムクエリを実行し、既定のWordPressクエリを実行しないことを保証する方法はありますか?
にクエリパラメータを変更する必要がありますボード間でより一貫性のある動作を得るために
コード、私たちはwhileループをクローズし、条件をクローズし、照会後のデータをリセットします。このウィジェットファイルの完全な内容は、ここGitHubにあります:https://github.com/warfare-plugins/social-warfare /blob/master/functions/widgets.php " –