こんにちわ、tkj_tkjさん。
いまいちど、Codex の get_posts の記述の仕方を確認し、 tkj_tkjさんの記述コードを比較してみてください。
追記ですが、
http://tipsbear.com/wordpress-radio-customfields/
こちらの記事のプラグインで「ループ内で実装する」見る限り、
<?php $kaisai = get_post_meta($post->ID,”開催状況”,true); ?>
<?php if ($kaisai == ‘開催中’): ?>
この記述で、開催中のカスタムフィールドが選ばれたものが出力される、ということで間違いなさそうなのですが、
開催中も終了も両方とも出力されてしまいます。
なぜなのでしょうか・・・
こんにちわ、tkj_tkjさん。
いまいちど、Codex の get_posts の記述の仕方を確認し、 tkj_tkjさんの記述コードを比較してみてください。
gatepaceさん
ご回答ありがとうございます。
以下のように変更した結果、
<?php $kaisai = get_post_meta($post->ID,"開催状況",true); ?>
<?php if ($kaisai == '開催中'): ?>
<div id="news-list" class="clearfix">
<?php
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => '開催状況',
'value' => '開催中',
)
)
);
$posts = get_posts($args); global $post;?>
ページ上段には「開催中」の記事が出てくるようになったのですが、
ページ下段の「終了」については記事が出力されなくなりました。
※いままでは上段も下段も開催中、終了の記事問わず出力されていたので前進ではあります。ありがとうございます。
<?php
$args2 = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => '開催状況',
'value' => '終了',
)
)
);
$posts = get_posts($args2); global $post;?>
<?php $kaisai = get_post_meta($post->ID,"開催状況",true); ?>
<?php if ($kaisai == '終了'): ?>
もし理由がわかればご指南いただければ助かります。。。
そもそも
セミナー一覧ページを作成し、
これがどういったページなのかさっぱり分かりません。
なので、get_posts より前にカスタムフィールドの値で条件分岐をしている意味が分かりません。
まず、get_posts を実行時にカスタムフィールドの値で絞り込みをした方が良いのでは?
Codex の get_posts にも書いてありますが、ループの作り方もまずいような
ざっくりとした例
<?php
$args = array(
'posts_per_page' => 5,
'meta_query' => array(
array(
'key' => 'name', // カスタムフィールドの名前
'value' => 'value', // // カスタムフィールドの値
)
)
);
$myposts = get_posts( $args );
global $post; // テンプレートファイル内なら書かなくても良い
foreach ( $myposts as $post ) : setup_postdata( $post );
global $post;
// マークアップはお好みで
endforeach;
wp_reset_postdata();
$args2 = array(
'posts_per_page' => 5,
'meta_query' => array(
array(
'key' => 'name', // カスタムフィールドの名前
'value' => 'value', // // カスタムフィールドの値
)
)
);
$myposts2 = get_posts( $args2 );
foreach ( $myposts2 as $post ) : setup_postdata( $post );
// マークアップはお好みで
endforeach;
wp_reset_postdata();
?>
あとは var_dump()
使うなりして変数の中身を確認してみるとか。
説明が少なく申し訳ございません。
セミナー一覧ページとは
これから開催するセミナーと既に実施したセミナーを上下に分けて一覧表示するページを想定しています。
よって、
[開催状況]
type = radio
value = 開催中 # 終了
clearButton = true
このようなカスタムフィールドを設けました。
意図としては
上段に開催状況と開催中というカスタムフィールドで条件分岐し出力、
下段に開催状況と終了というカスタムフィールドで条件分岐し出力、
という出力方法を想定しています。
上記例を参考にさせていただきもう少し試行錯誤してみます。
ありがとうございます。
セミナーの開催情報を投稿する際にカスタムフィールドで「開催中」「終了」をわけています。
セミナー一覧ページを作成し、
ページ上段に開催中のセミナーのリスト、
ページ下段に終了したリストとして分けて表示をしたいのですがうまくいきません。
申し訳ございません、以前に書いた内容とほぼ同じですね・・・
なんと書けばご理解いただけるか・・・ちょっと考えてみます。
ありがとうございます。
以下のコードでうまく表示されました。
<div id="news-list" class="clearfix">
<?php
$args = array(
'posts_per_page' => 5,
'meta_query' => array(
array(
'key' => '開催状況',
'value' => '開催中',
)
)
);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
【出力内容 日付やタイトル】
<?php endforeach;
wp_reset_postdata();?>
</div>
<!--///div#news-list-->
この下に「開催中」を「終了」に変更したものを置くことで上下で開催中と終了したセミナーに出し分けることができました。
ただ、当初開催中のセミナーがない場合は
<?php else: ?>
<div id='contents5'>
<p class='align-center'>現在開催予定のセミナーはありません</p>
</div>
<?php endif; ?>
と<?php else: ?>を用いていたのですが、
上記の記述で<?php else: ?>を用いるとシンタックスエラーが発生してしまいました。
開催中の記事がない場合の条件分岐で発生させる場合は何を使うべきなのでしょうか?
else は if とセットです。
「当初開催中のセミナーがない場合」という条件をどこかに足さないと。
ヒント:$myposts = get_posts( $args ); が「ある場合」と「無い場合」ですかね
ありがとうございます!
なんでもかんでも質問してしまって申し訳ございません。。。
確認してみます。