タグ付けされた質問 「wp-query」

「wp-query」はあいまいに2つのことのいずれかを指します。1)WP_QueryはWordPressにネイティブなクラスであり、これによりユーザーはいくつかの基準を使用して投稿データベースにクエリを実行できます。2)$ wp_queryは、特定のリクエストに基づいてWordPressによって準備されたメインクエリオブジェクトを保持するグローバル変数です。

5
部分的なメタキーで投稿をクエリするにはどうすればよいですか?
投稿の「いいね」ステータスを投稿メタとして保存する機能があります。その「いいね」を好きなユーザーに関連付けたいので、「like_status_ {user_id}」というカスタムフィールドを設定します({user_id}は現在ログインしているユーザーのIDです)。これを0または1.したがって、「いいね」が複数ある投稿の場合、dbには次のように設定されたメタ値がいくつかあります。 'meta_key' = 'like_status_0' 'meta_value' = 1 'meta_key' = 'like_status_2' 'meta_value' = 1 'meta_key' = 'like_status_34' 'meta_value' = 1 ....等々。 特定の投稿には潜在的に数千のいいね!他の誰かもその投稿を気に入っているかどうかを示すクエリをどのように実行しますか? 私はこのようなことを考えていました: $query = new WP_Query(array( 'meta_key' => 'like_status_{user_id}', 'meta_value' => 1, )); 他の誰かがその投稿を気に入ったときに、「ねえ、あなたが気に入った投稿を他の誰かが気に入ったので、ぜひチェックしてみてください!」のような通知をプッシュしようとしています。しかし、私は他の誰かがその投稿を気に入っているかどうか、そうであれば誰がそうするかを知る方法が必要です。 それが不可能な場合は、投稿の1人のユーザーの「いいね」のステータスをすばやく更新する効率を維持しながら、このデータをpost_metaとして保存するより良い方法を提案できますか?

1
4.4へのアップグレード後にカスタム分類クエリが壊れる
4.2から4.4にアップグレードしたところ、分類クエリが空になりました。アップグレード前は問題なく動作していました。 という名前のカスタム分類を登録しました'title'。これは、カスタム投稿タイプで使用され'sg-publications'ます。WPテンプレート階層に従って、taxonomy-title.phpデフォルトのクエリ引数を使用するというテンプレートを作成しました。これまでは、各パブリケーションをタイトルで正しく表示していました。 以下は、そのテンプレートの$ queried_objectおよび$ wp_query-> requestの出力です。 [queried_object] => WP_Term Object ( [term_id] => 1256 [name] => Stroupe Scoop [slug] => stroupe-scoop [term_group] => 0 [term_taxonomy_id] => 1374 [taxonomy] => title [description] => [parent] => 0 [count] => 30 [filter] => raw ) [queried_object_id] => 1256 [request] => SELECT wp_posts.* FROM …

1
ホームページで(meta_queryを使用して)通常の投稿タイプとカスタム投稿タイプを混在させる
これを達成する方法がわかりません。サイトのホームページで標準の投稿とカスタムの投稿を混在させようとしていますが、メタ値が設定されている場合にのみカスタムの投稿を表示します。投稿の表示は'post_type' => array('game', 'post')正常に機能しますが、meta_queryに追加すると、通常の投稿が表示されなくなります(meta_query条件を満たさないため、これは理にかなっています)。 では、通常の投稿が引き続き含まれるように、meta_queryをカスタム投稿タイプのみに制限するにはどうすればよいですか?

4
SINGLE POSTページにいるかどうかを検出する最良の方法
だからこれはかなり平凡なことのように見えるかもしれませんが、ここで私に従ってください。 pre_get_postsアクションを通じてロジックを追加しようとしています。これは私に与えられたWP_Queryオブジェクト全体です。(終わりを参照) 私が使用を検討したもの: is_single() - 広すぎます。 is_singular()- get_queried_object()まだ設定されていないため、これを使用するには早すぎます。 $query->single プロパティ-広すぎる。 $query->get('post_type')- nameプロパティを使用しているため、設定されていません。 あるname本当にここだけのインジケータ? WP_Query Object ( [query] => Array ( [page] => [name] => abcs-of-mental-health ) [query_vars] => Array ( [page] => [name] => abcs-of-mental-health [error] => [m] => 0 [p] => 0 [post_parent] => [subpost] => [subpost_id] => [attachment] …
9 wp-query 

2
get_template_partループでカスタムWP_Queryを使用する
カスタム投稿タイプのクエリがあります: <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $books = new WP_Query(array( 'post_type' => 'wiki', 'posts_per_page' => '50', 'paged' => $paged )); ?> そして、私はloop-books.phpを使用してこれらの投稿をループしたいです: <?php get_template_part( 'loop', 'books' ); ?> loop-books.phpの内部には、通常のloop.phpと同様に、これらの変数があります。$ booksクエリで機能するようにhave_postsおよびthe_post関数を変更しました。 <?php if ( $books->have_posts() ) : ?> <?php while ($books->have_posts()) : $books->the_post(); ?> <?php the_title(); ?><br/> <?php …


4
カスタムSQLクエリによるページ分割
特定のWHERE句を含むカスタム投稿タイプの投稿を選択するためのSQL文字列があります。オフセットと制限を使用して、表示されているページに応じて適切な投稿を返しました。それはうまくいきます。 今、私はしたいと思いますprevious_posts_link()し、next_posts_link()機能の仕事。どちらもから呼び出されget_posts_nav_linkますglobal $wp_query。 global $wp_querySQL文字列や$wpdb->get_results結果などを使って再割り当てできる方法はありますか?したがって、ネイティブ関数previous_posts_link()とnext_posts_link()WP関数は機能します。 そうでない場合、prevおよびnext postリンク機能をどのように再現できますか? 私はどんな助けとアドバイスにも本当に感謝します!私はこれに完全にこだわっています。 ありがとう:) 注:私はちょうどそれprevious_posts_link()がすべてのページで正しく機能していることに気づきましたがno idea why、この場合、なぜnext_posts_link機能しないのですか:S これがコードです: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $post_per_page = intval(get_query_var('posts_per_page')); $offset = ($paged - 1)*$post_per_page; $sql = " SELECT SQL_CALC_FOUND_ROWS wp_posts.*, wp_postmeta.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN wp_postmeta AS mt1 ON …

3
将来の投稿を表示できるようにカスタム投稿タイプを設定する方法
投稿と同じように機能するようにCPTを設定しましたが、イベントの詳細の投稿に使用しました。 事柄には、いくつかの投稿が将来のものであり、それらには将来の日付が設定されているということです。問題は、通常のユーザーがこれらの投稿を表示できないことです。 そう: 今後の投稿もリストするようにarchive-events.phpを変更するにはどうすればよいですか?ページ付けを維持しながら、遠い未来の投稿を最初に表示し、最も古い投稿を最後に表示します。 投稿がまだ技術的に公開されていないため、ユーザーが将来の投稿をクリックしても404ページが表示されないようにするにはどうすればよいですか?

4
get_posts()でmeta_query引数のエイリアスを設定します
を実行するときにmeta_query引数にエイリアスを設定する方法はありget_posts()ますか?クエリの1つでパフォーマンスが低下しています。最適化するには、1つだけ必要なときに3つのテーブルを結合するのではなく、同じ結合テーブルを再利用できる必要があります。 私の現在の例... $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

4
投稿を取得するWP_Queryを完全に停止することは可能ですか?
WP Redisを使用して、キーが$ query_vars_hashの$ wp_queryオブジェクト全体をキャッシュしようとしています。 これは以下$wp_queryに追加された方法$wp_object_cacheです: add_action('wp', function($wp) { if ( is_admin() ) return; global $wp_query; if ( !wp_cache_get($wp_query->query_vars_hash, 'globals') ) { wp_cache_add($wp_query->query_vars_hash, $wp_query, 'globals'); } }); 次に、WP_Query投稿を取得する前に、クエリが既にキャッシュされているかどうかを確認する必要があります。 add_action('pre_get_posts', function($query) { if ( is_admin() ) return; $cached_query = wp_cache_get($query->query_vars_hash, 'globals'); if ($cached_query) { $GLOBALS['wp_query'] = &$cached_query; return; // Return immediately to …
8 wp-query  hooks  cache 

1
カスタムWP_QueryのDESC、ASCで注文
クエリでマルチレベルの順序付けを行う必要があります。問題は、SQLのように1つの値をDESCに、もう1つをASCに順序付けることです。次のSQLをターミナルで実行すると、必要なものが得られるようです。 SELECT DISTINCT * FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_posts.post_type = 'post' AND wp_postmeta.meta_key = 'pb_issue_featured' AND wp_posts.post_status = 'publish' ORDER BY wp_postmeta.meta_value DESC, wp_posts.menu_order ASC; pb_issue_featuredブール値です。私が必要とする最終結果は、このフィールドのメタ値が1である投稿を上部に表示するクエリです。次に、2番目の層の順序が指定されていますmenu_order(私は投稿タイプの注文プラグインを使用しています)。 問題は、ブール値を高から低(1から0)に並べる必要があるのですが、menu_orderはその逆です。プラグインで最初に注文されるもののメニュー順序は1です。そのため、WP_Queryで組み込みの「orderby」を使用しても機能しません。誰か提案がありますか?「posts_orderby」フィルターを調べましたが、取得できませんでした。それがどこに適用されるべきか、どうやってそれをトラブルシューティングできるのか本当にわかりませんでした。それは私がそれを持っていた方法を再注文しなかっただけです。 助けてくれてありがとう!関連がある場合は、実際のWP_Queryを投稿しますが、できる限り短くしたいと考えています。 クエリ引数: $args = array( 'post_type' => 'post', 'meta_key' => 'pb_issue_featured', 'orderby' => 'meta_value', 'order' => 'DESC', …
8 wp-query  mysql  order 

2
並べ替え:orderby meta_value_num THENを使用したカスタムクエリ
次の条件に一致するカスタム投稿タイプクエリを実行しようとします。 最初に映画を降順で年順に並べ替え、 その後(年の「内部」の順序で)タイトルごとにアルファベット順に並べ替えます。 希望する出力: 映画タイトルA、2006 映画タイトルZ、2006 ... 映画タイトルA、1996 映画タイトルZ、1996 次のコードを使用します。 $wp_query = new WP_Query(); $wp_query->query( array( 'post_type' => 'movies', 'distribution' => 'companyA', 'meta_key' => 'year', 'orderby' => 'meta_value_num title', 'order' => 'DESC', 'posts_per_page' => -1, 'post_status' => 'publish', )); 私はいくつかのことを試しましたが、この「逆」の結果しか得られません。 映画タイトルA、1996 映画タイトルZ、1996 ... 映画タイトルA、2006 映画タイトルZ、2006 DESC、ASCを変更すると、タイトルのソートのみが変更されます。しかし、タイトルではなく年に適用する必要があります。 2つのorderby値を使用する正しい方法ですか?または、meta_queryまたはカスタムSQLを使用する必要がありますか? 事前にTHX! これが結果のSQLクエリです $GLOBALS['wp_query']->request …

2
カスタム投稿タイプによる投稿ページのAJAX検索
単一の投稿ページでajax検索を作成する際に問題が発生しました。検索結果をカスタム投稿タイプ「fod_videos」と「post」およびカテゴリ12に制限する必要があります。私の問題は、検索がそれらのフィルターの下のすべての投稿を返し、検索値を取得しないことです。私は明白な何かが欠けていると思いますが、それを理解することはできます。これが私の設定です。 <div class="panel"> <h2>Search Videos</h2> <div id="my-search"> <form role="search" method="get" id="searchform" action="http://myurl.com/" > <input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Search" /> </form> </div> </div> add_action('wp_ajax_wpa5000_search', 'wpa5000_search'); add_action('wp_ajax_nopriv_wpa5000_search', 'wpa5000_search'); function wpa5000_search(){ global $wp_query; $search = $_POST['search_val']; $args = array( 's' => $search, 'posts_per_page' => 10, 'cat' => 12, …

1
3つの言語すべてを提供するWP_Queryを備えたWPML [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新することがありますので、上のトピックワードプレスの開発スタックExchange用。 5年前休業。 WPMLサポートフォーラムでこれについて何か知っていますが、ここでも質問できると思いました。重要な情報は次のとおりです。私は、カスタム投稿タイプ、カスタムフィールド、見た目すべてをカスタマイズしたWPマルチサイトセットアップを実行しています。特定のテンプレートファイルで、別のブログからアイテムのリストを取得する二次ループがあります。私が収集したものから、WP APIを使用するものはすべて、現在の言語のみにフィルタリングする必要がありますが、WP_Query()私が持っている機能はどれもそうしていません。 関連コード: <?php switch_to_blog(23); $args = array('post_type' => 'release-notes', 'suppress_filters' => 0, 'meta_query' => array( array( 'key' => 'related_products', 'value' => $thisproduct, 'compare' => 'LIKE' ) ) ); $loop = new WP_Query($args); if ($loop->have_posts()) { echo '<h2>Release Notes</h2>'; while ( $loop->have_posts() ) : $loop->the_post(); //echo …

5
分類法のすべての用語のカスタム分類法WP_Query?
特定の分類法の用語でタグ付けされた投稿をクエリする簡単な方法はありますか? 私はこのテクニックを知っています: $custom_taxonomy_query = new WP_Query( array( 'taxonomy_name' => 'term_slug', ) ); しかし、term_slugの代わりにワイルドカードを渡すか、おそらく空の文字列を渡します。次に、特定の1つの用語だけでなく、その分類法の任意の用語でタグ付けされたすべての投稿が表示されます。 助けてくれてありがとう、デイブ

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