wordpressでカスタム投稿タイプのあるフィールドに値が入っていない(入力していない)ものは
出力の対象外にしたい!!
と思いましたがなかなかやり方がわからず。
やり方を二つ見つけたので、記事にしました。
wordpressを勉強するならオススメの本はこちら
フィールドの値が数値だった場合
<?php $args = array( 'posts_per_page' => 3, 'meta_key' => 'test_flg', 'meta_value'=> 0, 'meta_compare'=>'>', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'post_type' => 'test', 'post_status' => 'publish' ); $posts_array = get_posts( $args ); ?>
赤字のところが大切ですね。
フィールドの値が0以上の場合出力する。という処理にしました。
これにより値が入っていない箇所は出力対象外になるるようです。
ただ、test_flgに0や、-1などを入れ込むパターンがある場合はそれも取得対象外になってしまいます。
フィールドの値が文字列(数値でも可能)だった場合
どうやら、ワードプレスのフィールドに何も入力しない場合
半角スペースが入り込むらしく
(Nullが入っていると思っていましたが、半角スペースでした)
半角スペース意外のものを取得すれば、
フィールドに値が入っていないもの以外のものが取得できます。
<?php $args = array( 'posts_per_page' => 3, 'meta_key' => 'test_flg', 'meta_value'=> ' ', 'meta_compare'=>'!=', 'post_type' => 'test', 'post_status' => 'publish' ); $posts_array = get_posts( $args ); ?>
‘meta_value’=> ‘ ‘,
の値は半角スペースを入れないとうまく行かないため
‘(半角スペース)’,というように半角スペースをしっかり入れましょう。
これにより、フィールドの値が数値でないものでも
フィールドに値が入っていないものを除いて
取得できます。
ということで、こんな感じで作成して
必要な記事だけ取得できました。
wordpressを勉強するならオススメの本はこちら