meta_valueが空でない場合にのみ投稿を表示するにはどうすればよいですか
-
-
どのバージョンのWordPressを使用していますか?Which version of WordPress are you using?
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel-申し訳ありませんが、マイク、これは表示されませんでした—3.1です.@MikeSchinkel - Sorry Mike, didn't see this — It's 3.1.
- 0
- 2011-03-02
- robalan
-
WP 3.5はこの問題を修正し、別の比較方法を使用できるようにしますWP 3.5 fixes this problem and lets you use a different compare method
- 0
- 2017-12-06
- Erenor Paz
-
7 回答
- 投票
-
- 2011-03-02
こんにちは @Rob:
それを行う方法がわからない理由は、少なくともSQLに頼らなければ、それが不可能だからです.テーマの
functions.php
ファイルに次を追加してみてください.add_filter('posts_where','yoursite_posts_where',10,2); function yoursite_posts_where($where,$query) { global $wpdb; $new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' "; if (empty($where)) $where = $new_where; else $where = "{$where} AND {$new_where}"; return $where; }
空の値を持つカスタム
'featured_image'
フィールドがある場合、上記はそれらを除外します.問題が他の問題である場合は、問題を解決するためにデータがどのように見えるかを確認する必要があります.私が興味を持っていることの1つ.
'featured_image'
の空の値をどのように取得しましたか?WordPress 3.1の管理UIは、空の値を入力しないように最善を尽くします. これがお役に立てば幸いです.Hi @Rob:
The reason you can't figure out how to do it is because it's not possible, at least not without resorting to SQL. Try adding the following to your theme's
functions.php
file:add_filter('posts_where','yoursite_posts_where',10,2); function yoursite_posts_where($where,$query) { global $wpdb; $new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' "; if (empty($where)) $where = $new_where; else $where = "{$where} AND {$new_where}"; return $where; }
If you have custom
'featured_image'
fields with empty values the above will filter them out. If you problem is something else, we'll have to see what your data looks like to solve it.One thing I'm curious about; how did you get empty values for
'featured_image'
? The admin UI in WordPress 3.1 does its best to keep you from entering empty values. Hope this helps.-
神に感謝します...だからそれは私たちだけではありません.それは知っておくと良いことだと思います.ありがとう@ MikeSchinkel-彼らは本当にそれをコーデックスに入れるべきです...説明を楽しみにしています.ありがとう!Thank god... so it's not just us. That's good to know, I suppose. Thank you @MikeSchinkel - They really ought to put that in the codex... Looking forward to the explanation. Thanks!!
- 0
- 2011-03-02
- robalan
-
@ Rob-それで私は3.0の知識を失っていました、そして今私はそれを3.1でテストしています、そしてそれはうまくいくようです.2つの投稿と1つに `featured_image`カスタムフィールドがあり、クエリは正常に機能します.何を見つけていますか?クエリが `featured_image`カスタムフィールドを持っているが、そのフィールドの値が空である投稿をロードしている可能性はありますか?@Rob - So I was going off my 3.0 knowledge and now I'm testing it in 3.1 and it does seem to work. I have two posts and one with a `featured_image` custom field and your query works fine. What are you finding? Is there a chance your query is loading posts that do have a `featured_image` custom field but where the value for that field is empty?
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel-冗談じゃない?はい、それはまさにそれが行っていることです—すべての投稿にはfeatured_imageフィールドがあり、すべてが設定されているわけではありません.とにかくすべての投稿を読み込んでいます.@MikeSchinkel - No kidding? Yes, that's exactly what it's doing — every post has the featured_image field, they're just not all set. It's loading up all posts anyway.
- 0
- 2011-03-02
- robalan
-
@ Rob-更新された回答を参照してください.@Rob - See my updated answer.
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel-ありがとう!クエリでもpost_typeを設定した後、完全に機能しているようです.空の値は意図的なものです.すべての投稿にこの注目の画像があるわけではありません(投稿のサムネイルについては知っていますが、このサイトには適していません).本当にありがとう!@MikeSchinkel - Thank you! It seems to be working perfectly, after setting the post_type in the query also. The empty values are purposeful — not every post has this featured image (and I know about the post thumbnail, it's just not a good option for this site). Thanks so much!
- 0
- 2011-03-02
- robalan
-
@ MikeSchinkel-私は修正されたままです-それは私が望んでいたクエリで機能しますが、それは他のどこでも404を引き起こしています.単一の投稿ページ、アーカイブ...:o \何かアイデアはありますか?@MikeSchinkel - I stand corrected - it works on the queries that I wanted it to, but it's causing 404's everywhere else. Single post pages, archives... :o\ Any ideas?
- 0
- 2011-03-02
- robalan
-
上記の質問のコードサンプルでは、 `WP_Query()`呼び出しの直前に `add_filter()`呼び出しを配置してから、 `wp_reset_query()を呼び出す直前に` remove_filter( 'posts_where'、 'yoursite_posts_where'); `を配置してみてください.) `.In the code sample in your question above, try putting the `add_filter()` call just before your `WP_Query()` call, then put `remove_filter('posts_where','yoursite_posts_where');` just before you call `wp_reset_query()`.
- 0
- 2011-03-02
- Dougal Campbell
-
そのコードは、すべてのカスタムフィールドをチェックして、それらのいずれかが空であるかどうかを確認しますか?クエリで1つの特別なフィールドのみをチェックし、他のフィールドが何であってもそれが空であるかどうかを確認したい場合はどうすればよいですか?That code checks ALL custom fields to see if ANY of them are empty? What if I want the query to only check for one special field and see if that is empty no matter what the other ones are?
- 0
- 2011-05-31
- Jens Törnell
-
- 2011-03-04
これはクエリに値を取得するために機能するようですが、有効な結果が得られるかどうかはわかりません.
'meta_query' => array( array( 'key' => 'some_key', 'value' => array(''), 'compare' => 'NOT IN' ) )
結果をテストするためのフィールドを作成する時間がありませんでしたが、今日使用したクエリを監視していて、
NOT IN
が空の配列を喜んで取得することに気付きました.This seems to work for getting the value into the query, not sure about whether it pulls valid results though..
'meta_query' => array( array( 'key' => 'some_key', 'value' => array(''), 'compare' => 'NOT IN' ) )
Not had time to create fields to test the results, but i've been watching queries i've worked with today and noticed
NOT IN
will happily take an empty array.-
私はこれが古い答えであることを知っていますが、このアプローチを試みている人にとっては、 `'NOTIN`'の代わりに` 'compare'=> 'NOTLIKE'`で動作しますI know this is an old answer, but for those trying this apparoach, it works with `'compare' => 'NOT LIKE'` instead of `'NOT IN`'
- 0
- 2012-07-11
- handsofaten
-
ないまたは好きではない代わりに!=を使用する方が確かに効率的です.http://wordpress.stackexchange.com/a/10286/32863と同じです(これはメタキーに関するものですが、同じ原則です)Surely more efficient to use != instead of not in or not like. Same as http://wordpress.stackexchange.com/a/10286/32863 (that is about meta keys, but same principle)
- 3
- 2015-09-09
- Adam
-
さらにクリーンな解決策:アダムがすでに述べたように.使用すること: `'値'=> ''、 '比較'=> '!=' 'Even cleaner solution: like Adam stated already. Is to use: `'value' => '', 'compare' => '!=' `
- 5
- 2018-04-20
- Martijn van Hoof
-
空の配列ではないことを確認する必要がある場合... `'value'=> array( ''、array()、serialize(array()))、 'compare'=> 'NOT IN'`If you need to check to make sure it's not an empty array... `'value' => array('', array(), serialize(array())), 'compare' => 'NOT IN'`
- 0
- 2018-08-14
- StephanieQ
-
- 2017-12-06
これは古い質問ですが、Wordpressがこの「不足している機能」を修正したようです.
Wordpress Codex は、次のようにメタキーの存在(または非存在)を確認できます 'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
これはWP>=3.5以降で利用可能です.
This is an old question, but it seems Wordpress has fixed this "missing feature": now, according to Wordpress Codex is possible to check for existence (or non-existence) of the meta key, like this
'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
This is available as of WP >= 3.5.
-
`EXISTS`は空の値を表示しますが、これはここで求めているものではありません.最善の解決策は、私のテストに関する限り、 `'value'=> ''、 'compare'=> '!=' 'です.`EXISTS` will show empty values which is not what we're after here. The best solution is `'value' => '', 'compare' => '!=' ` as far as my testing goes.
- 0
- 2019-08-09
- Ben
-
@BenそれはまさにOPが試みたものですが、成功しなかったようです.meta_keyの存在に基づいて投稿を取得するメソッドを検索して通過する人々がそれを見つけられるようにするために、ソリューションを追加しました.メタの値は「something」、「empty」、または「null」(メタが存在しない場合)である可能性があるため、おそらく最善の解決策は、2つのオプションを「AND」関係でマージすることです.@Ben That's exactly what the OP tried, but without any success, it seems. I added my solution to make sure people passing by searching for a method to retrieve posts based on existence of meta_key could find it. Since the value of a meta can be "something", "empty" or "null" (in case the meta doesn't exist), probably the best solution would be to merge the two options with an "AND" relation
- 2
- 2019-08-09
- Erenor Paz
-
- 2018-01-10
これは私のために働いたクエリです.2011年のt31osの回答の比較と非常に似ていますが、メタキー/値は単純なテキスト文字列であるため、meta_query配列である必要はありません.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
何らかの理由で、 'meta_value'=> '' および 'meta_compare'=> '!=' または 'meta_compare'=> 'NOTを使用するLIKE 'はまだすべての投稿を取得しましたが、Advanced Custom Fields(ACF)プラグインを使用してメタ値を作成したことと関係がある可能性があります.
コーデックスのカスタムフィールドパラメータの詳細. This is the query that worked for me. Very similar to the comparison in t31os's answer from 2011, but because the meta key/value is just a simple textstring, it doesn't need to be a meta_query array.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
For whatever reason, using 'meta_value' => '' and 'meta_compare' => '!=' or 'meta_compare' => 'NOT LIKE' still pulled all posts for me, but it probably has something to do with the fact that I created my meta value using the Advanced Custom Fields (ACF) plugin.
-
- 2011-03-03
これはWP3.2-alphaで修正されています:
This is fixed in WP 3.2-alpha:
-
- 2014-01-24
何かが足りないのですか?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
そうしませんか?
Am i missing something?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
Won't that do it?
-
編集:コーデックスから: `` `$ query=new WP_Query( 'meta_key=featured_image');` ``ここを見てください:http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_ParametersEdit: from the codex: ```$query = new WP_Query( 'meta_key=featured_image' );``` look here:http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
- 0
- 2014-01-24
- Infinity Media
-
まず、コメントを追加する代わりに、いつでも質問または回答を[編集]できます.2番目:コメントの代わりに回答を**誤用**しないでください.First, you can always [edit] a question or answer instead of adding a comment. Second: Don't **misuse** answers instead of comments.
- 0
- 2014-01-25
- kaiser
-
新しい質問がある場合は、[質問する](http://wordpress.stackexchange.com/questions/ask)ボタンをクリックして質問してください.コンテキストを提供するのに役立つ場合は、この質問へのリンクを含めてください.If you have a new question, please ask it by clicking the [Ask Question](http://wordpress.stackexchange.com/questions/ask) button. Include a link to this question if it helps provide context.
- 0
- 2014-01-25
- kaiser
-
@ kaiser-彼が答えていたように私には思えます.彼は自分のコードが有効かどうかを尋ねていませんが、彼がうまくいくと信じていることで、皮肉なことに質問に答えていると思います.@kaiser - seems to me like he was answering. He's not asking if his code is valid, but I suppose sort of sarcastically answering the question with what he believes will work.
- 0
- 2016-09-05
- Nathan
-
@ネイサンこれはコメントの目的です.@Nathan This is what comments are for.
- 0
- 2016-09-05
- kaiser
-
@kaiser、コメントは回答とコードを投稿するためのものですか?コメントにコードを投稿するにはどうすればよいですか?@kaiser, Comments are for posting answers and code? How do you post code in a comment?
- 0
- 2016-09-05
- Nathan
-
@ネイサン私は答えの皮肉な部分に言及していました.コードは答えである必要があります-いくつかの説明を含みます.@Nathan I was referring to the sarcastic part of the answer. The code should be an answer – including some explanation.
- 0
- 2016-09-05
- kaiser
-
WordPressにバグがありましたが、現在は修正されています.これはそれを行う正しい方法です.There was a bug in WordPress but now it's fixed. This is the correct way to do it.
- 0
- 2016-12-04
- Ryan Taylor
-
3人がすでにこれを解決しようとしており、私たちはゼロに近づいています.meta_key'featured_image 'に値がある投稿のみを表示したい.
つまり... 'featured_image'が空でない場合は、投稿を表示します.コードは次のとおりです:
WP_Queryの代わりに、非推奨のmeta_ *オプション、query_posts、get_postsなど、考えられるすべての組み合わせを文字通り試しました...何もありません. selectステートメントを出力しましたが、メタ値フィールドは表示されていません.存在します-投稿用(すべての投稿用)で、データベースに存在します.
現在、このトピックに関するすべての投稿を確認しています.これには次のものが含まれます.
query_postsカスタムフィールドが空でない場合にのみ結果を表示します
http://scribu.net/wordpress/advanced-metadata-queries.html
ジルチ.助けてください...