%e3%80%90wordpress%e3%80%91%e8%a8%98%e4%ba%8b%e3%81%ae%e3%82%b9%e3%83%86%e3%83%bc%e3%82%bf%e3%82%b9%e6%af%8e%e3%81%ae%e6%9d%a1%e4%bb%b6%e5%88%86%e5%b2%90

【wordpress】記事のステータス毎の条件分岐

ステータスというのは「公開」「非公開」とかの記事の状態のこと。
記事の状態に合わせて、タイトル等の表示を条件分岐してほしいという依頼があって、実装してみました。
ノンプログラマーなので、ソースコードはちょっと汚いですが、ごめんなさい。

投稿、カスタム投稿のステータスによる条件分岐

これはcodexに掲載されていたものです。

<?php
if( get_post_status('ここに記事のID') == 'publish' ){
  //公開の時の処理
} else {
  //公開以外の時の処理
}
?>

参考:codex
http://www.imamura.biz/blog/cms/wordpress/tips/22240

ターム内の記事のステータスによる条件分岐

タームとは、カスタム投稿タイプのカテゴリー(カスタムタクソノミー)で分類された項目のことです。
ターム内の記事のステータスによる条件分岐というのが、ネットを探しても結局見つからず。
タームの記事を出力する方法を掲載されていた方がいらっしゃいましたので、それを参考にさせていただいて、実装してみました。
上記コードの「get_post_status()」かっこ内を空にすると、現在の記事のステータスとして条件分岐できるとのことだったので、先にタームを指定してあげたらなんとか条件分岐できるんじゃないかと思ったら、うまく動いてくれました。
ここまでけっこう大変だった。。。
ちなみに固定ページ内にタームの記事を条件分岐で表示させるというものです。

<?php
	$args = array(
		'post_type' => 'カスタム投稿名',
			'tax_query' => array( //タクソノミー、タームの設定
				array(
					'taxonomy' => 'タクソノミー名',
					'field' => 'slug', //slugで指定
					'terms' => 'ターム名'
				)
			)
	);
	$domestic_post = get_posts($args);
	$imgpath = get_template_directory_uri();
if( get_post_status() == 'publish' ){
	echo '<img src="'.$imgpath.'/image/00.jpg" alt="">';
	if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post );
		the_content(); //本文
	endforeach;
	else :
	endif;
} else {
	//公開以外の記事の処理方法
}
wp_reset_postdata();
?>

今回は本文表示の前にタイトル(画像)の表示も一緒にしたかったので、このようなコードになりました。
表示は本文だけでいいという方は、13行目と15行目を削除してください。
13行目は画像のパスを取得していますので、適宜変更してください。

タイトルとURLをコピーしました