表示期限を設けないと何も入らないのであれば、表示期限を設けない投稿に対し
カスタムフィールドに決められたキーや値を入れて出力しかないと思います。
meta_keyが空白ではどうしようもないです。
stranger-jp様 早速のレスありがとうございます。
カスタムフィールドを設けようと
key:_expiration-date
値:0
で作成しましたが、カスタムフィールドが同名であることからなのか「操作を実行する権限がありません。」とのエラーが返ってきます。
Advanced Custom Fieldsからの追加も試みましたが、「__expiration-date」とアンダーバーが一つ追加した形でデータベースに格納されていました。
引き続きよろしくお願い致します。
値を同じものにしなくても例えば
key:期限なし
値:0
とでもすれば良くないですか?
こんな感じにすれば分けて出力できます。
<h2>表示期限が設定されていて期限が近い順</h2>
<?php
$args = array(
'post_type' => 'xxx',
'posts_per_page' => -1,
'post_status' => 'publish',
'meta_key' => '_expiration-date',
'order' => 'ASC',
'orderby' => 'meta_value',
);
?>
<?php $query = new WP_Query($args); ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
<br />
<h2>表示期限が未設定の投稿の新しい順(デフォルトの表示順)</h2>
<?php
$args = array(
'post_type' => 'xxx',
'posts_per_page' => -1,
'post_status' => 'publish',
'meta_key' => '期限なし',
);
?>
<?php $query = new WP_Query($args); ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title() ?></a></li>
<?php endwhile; ?>
stranger-jp様 再度レスありがとうございます。
上記のコードの方法ですと表示順が、
- 表示期限が設定されていて期限が近い順
- 表示期限に関係なく全ての新しい順
になるかと思います。ですので表示期限が設定されていてる投稿が重複していまいます。
「未設定の場合は別にカスタムフィールドにチェック」ということも考えましたが避けたいです。できるだけ1つのループで済ませたいとも思っています。
いささか、わがままでしょうか。
引き続きよろしくお願い致します。
だから
表示期限を設けないと何も入らないのであれば、表示期限を設けない投稿に対し
カスタムフィールドに決められたキーや値を入れて出力しかないと思います。
meta_keyが空白ではどうしようもないです。
です。
尚
2.表示期限に関係なく全ての新しい順
にはなりません。
「未設定の場合は別にカスタムフィールドにチェック」ということも考えましたが避けたいです。できるだけ1つのループで済ませたいとも思っています。
無理だと思います。
自分の頭からこれ以上の事は絞り出せません。
stranger-jp様 再度レスありがとうございます。
表示期限を設けない投稿に対し
という箇所を見落としていました。
無事ご教授いただきました内容で実装できました!
ありがとうございました!