タグ付けされた質問 「pre-get-posts」

5
WP_query()、query_posts()およびpre_get_postsを使用する場合
昨日、@ nacinの 「あなたはQueryがわからない」を読んで、うさぎの穴のクエリを少し送られました。昨日まで、私は(間違って)query_posts()すべてのクエリのニーズに使用していました。今、私はを使用することについて少し賢明ですWP_Query()が、まだいくつかの灰色の領域があります。 私が確かに知っていると思うこと: ページの任意の場所(サイドバー、フッター、あらゆる種類の「関連する投稿」など)に追加のループを作成する場合は、を使用しWP_Query()ます。害を与えることなく、単一のページで繰り返し使用できます。(右?)。 わからないこと @ nacin's pre_get_posts vs. はいつ使用しWP_Query()ますか?pre_get_posts今すべてに使用すべきですか? テンプレートページのループを変更する場合(分類アーカイブページを変更する場合if have_posts : while have_posts : the_postなど)、パーツを削除して独自に作成しWP_Query()ますか?またはpre_get_posts、functions.phpファイルで出力を変更しますか? tl; dr これから引き出したいtl; drルールは次のとおりです。 もう使用しquery_postsない 1つのページで複数のクエリを実行する場合は、 WP_Query() ループを変更するときは、これを実行してください__________________。 知恵をありがとう テリー ps:私は見て、読んだ:あなたはいつWP_Query対query_posts()対get_posts()を使用する必要がありますか?別の次元が追加されます— get_posts。しかし、まったく対処しませんpre_get_posts。

12
メタ値で並べ替えるが、メタ値を持たない投稿を含める
pre_get_postsフィルターを使用して組み込みのWP検索を変更し、ユーザーがさまざまなフィールドで投稿(カスタム投稿タイプの束を含む)をソートできるようにしました。 私が抱えている問題は、メタ値でソートするようにWPに指示すると、そのメタ値が設定されていないすべての投稿が除外されることです。これにより、「投稿」には「価格」が設定されていないが「アイテム」には設定されているため、ソートを「価格」から「日付」に変更すると、結果の数が変更されます。 これは私が望むものではないので、すべての投稿を含める方法があるかどうかを知りたいです-私がソートしているメタ値を欠いているものも含めて-そして値のないものを最後に置きます。 複数のフィールドでソートする方法は知っていますが、それは役に立ちません。 ありがとう 私がこの質問を持っているのは私だけではないようです:wp_queryの引数に特定のmeta_keyのある投稿とない投稿の両方を含める方法?しかし、解決策はありません。 更新 私は答えを試してみましたが、私が正しく理解したかどうかはわかりません。ここに私が今持っているものがあります: <?php function my_stuff ($qry) { $qry->set('meta_query', array(array( 'key' => 'item_price', 'value' => '', 'compare' => 'NOT EXISTS' ))); $qry->set('orderby', 'meta_value date'); # Sorting works with meta_value as well as meta_value_num - I've tried both $qry->set('order', 'ASC DESC'); $qry->set('meta_key', 'item_price'); } メタ値は数値です(名前が示すように価格を保存するために使用されます) 更新2 …

3
Pre Get PostsまたはWP_Queryを使用する必要があります
私はtaxonomy.phpテンプレートで次のクエリを呼び出しています query_brands_geo('dealers', 'publish', '1', $taxtype, $geo, $brands); この機能は完全に機能します。ただし、クエリ投稿のコーデックスを読んだ後、デフォルトのクエリを変更する好ましい方法としてpre_get_postsに言及しました。pre_get_postsは、以下のwp_query関数よりも効率的ですか? もしそうなら、どのようにpre_get_postsを構築し、変数とクエリを渡しますか? function my_custom_query($posttype, $poststatus, $paidvalue, $taxtype, $geo, $brands) { global $wp_query; $wp_query = new WP_Query(); $args = array( 'post_type' => $posttype, 'post_status' => array($poststatus), 'orderby' => 'rand', 'posts_per_page' => 30, 'meta_query' => array( array( 'key' => 'wpcf-paid', 'value' => array($paidvalue), 'compare' => …

2
WP_Queryでpre_get_postsを使用する
私は読んでいたスティーブン・ハリスへの優れた答えをこの質問の使用に関してWP_query()、query_posts()とpre_get_posts。 彼が言う「pre_get_postsを変更するためのフィルタであり、任意のクエリを。それはほとんどの場合のみ『メインクエリ』を変更するために使用されています。」 ?で作成された特定のセカンダリクエリのみpre_get_postsをフィルタリングするために使用できます。例えば。WP_Query $my_secondary_loop = new WP_Query(...); if( $my_secondary_loop->have_posts() ): while( $my_secondary_loop->have_posts() ): $my_secondary_loop->the_post(); //The secondary loop endwhile; endif; wp_reset_postdata(); 助けていただければ幸いです。

3
pre_get_posts関数を使用してメタキーで投稿を除外できますか?
多くの人がのpre_get_posts代わりにフックを使うことを好むようですquery_posts。以下のコードは機能し、メタキーが「機能」しているすべての投稿を表示します function show_featured_posts ( $query ) { if ( $query->is_main_query() ) { $query->set( 'meta_key', 'featured' ); $query->set( 'meta_value', 'yes' ); } } add_action( 'pre_get_posts', 'show_featured_posts' ); しかし、 ' featured' meta_keyを含む投稿はメインクエリから除外されます。これのための簡単な方法はありますか?

3
スティッキーポストがページごとの制限を超える
pre_get_postsホームページに表示される投稿の数を調整するために使用しています。 function lifelounge_query_adjust( $query ) { if ( is_home() ) { set_query_var( 'posts_per_page', 12 ); return; } } add_filter( 'pre_get_posts', 'lifelounge_query_adjust' ); しかし、私はスティッキーな投稿で問題に直面しています。私はスティッキーポストを持っている場合、基本的に、クエリが表示されますより多くのそれは12件のが表示されますので、私が指定した12件の記事よりプラス任意の粘着性の投稿を。もちろん、スティッキーな投稿は無視できます。 function lifelounge_query_adjust( $query ) { if ( is_home() ) { set_query_var( 'posts_per_page', 1 ); set_query_var( 'ignore_sticky_posts', 1 ); return; } } add_filter( 'pre_get_posts', 'lifelounge_query_adjust' ); しかし、これは理想的ではないと思います。スティッキーな投稿は、12の投稿の制限に含まれるべきであり、制限に追加されるべきではないと思います。それが私にとって最も理にかなっていることです。それを達成する方法はありますか?私は顔の手のひらに値するエラーを犯しましたか? ほぼ同じ:Sticky …

1
真のページと静的フロントページでpre_get_postsを使用する
私はpre_get_posts、真のページと静的なフロントページでの使用方法について非常に広範な研究を行ってきましたが、絶対確実な方法はないようです。 私がこれまでに見つけた最良のオプションは、Stackoverflowの@birgireによる投稿からのものでした。私はそれをデモクラスに書き直し、コードをもう少し動的にしました class PreGeTPostsForPages { /** * @var string|int $pageID * @access protected * @since 1.0.0 */ protected $pageID; /** * @var bool $injectPageIntoLoop * @access protected * @since 1.0.0 */ protected $injectPageIntoLoop; /** * @var array $args * @access protected * @since 1.0.0 */ protected $args; /** * @var …

4
分類ページを変更して、子分類のアイテムを除外する
私はこの質問を見つけました: pre_get_postsフィルターで$ query-> set( 'tax_query'を使用する方法はありますか? これは、はい、pre_get_posts()を使用して分類アーカイブの分類クエリを変更できることを示しているようです。だから私は思いついた add_action('pre_get_posts', 'kia_no_child_terms' ); function kia_no_child_terms( $wp_query ) { if( is_tax() ) { $wp_query->tax_query->queries[0]['include_children'] = 0; } } と同様 add_action('pre_get_posts', 'kia_no_child_terms' ); function kia_no_child_terms( $wp_query ) { if( is_tax() ) { $tax_query = $wp_query->get( 'tax_query' ); $tax_query->queries[0]['include_children'] = 0; $wp_query->set( 'tax_query', $tax_query ); } } …

2
pre_get_postsフィルターで$ query-> set( 'tax_query'を使用する方法はありますか?
フィルターで使用する方法$query->set('tax_query', ...)はありpre_get_postsますか?たとえば、次のコードはクエリを変更していません。私は$ taxonomiesをカスタム検索から作成していることに注意してください。 function custom_search_filter($query) { ... // array('taxonomy' => 'category', 'field' => 'id', 'terms' => array( 41,42 ), 'operator' => 'IN') $taxonomies = implode(',', $taxonomy_arr); // /wordpress/25076/how-to-filter-wordpress-search-excluding-post-in-some-custom-taxonomies $taxonomy_query = array('relation' => 'AND', $taxonomies); $query->set('tax_query', $taxonomy_query); } return $query; } add_filter( 'pre_get_posts', 'custom_search_filter', 999 ); 前もって感謝します。

2
ユーザーがアップロードした画像のみをリストするメディアライブラリ
ユーザーがアップロードした画像のみを一覧表示したい。ここにシナリオがあります: iframeを使用してフロントエンドで画像アップローダーを使用します。 upload_filesサブスクライバーレベルのユーザーに上限を追加し、アップロードした画像のみを表示したい。 このQを見つけましたQ ユーザーがアップロードしたメディアライブラリアイテムのみを表示するように制限していますか?しかし、受け入れられた答えは私のために機能しません。 // Code originally by @t31os add_action('pre_get_posts','users_own_attachments'); function users_own_attachments( $wp_query_obj ) { global $current_user, $pagenow; if( !is_a( $current_user, 'WP_User') ) return; if( 'upload.php' != $pagenow ) return; if( !current_user_can('delete_pages') ) $wp_query_obj->set('author', $current_user->id ); return; } 画像アップローダーを使用しているフロントエンドページの名前は「エントリ」です。 コードのこの部分を削除すると、コードif( 'upload.php' != $pagenow ) return;は機能します。条件付きコードのその部分を改善する必要があると思いますが、理解できませんでした。コードが必要でない他のページにコードを適用したくないので、条件が重要です。 だから、私が述べたように私は条件部分を改善するための助けが必要です。ありがとう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.