特定のカテゴリや物件IDで別の single-fudo.php を使う場合

特定のカテゴリや物件ID だけ別の 不動産物件詳細オリジナルテンプレート(single-fudo.php) を使う場合。(WEB製作者限定)

投稿カテゴリの場合、投稿ページは in_category() を使いますが物件カテゴリは has_term() を使います。(WordPress3.1~)

新たに作成したオリジナルテンプレートを使用しているテーマフォルダに設置します。
使用しているテーマの function.php に下記のコードを追加します。
*以下、例は デフォルトテーマ( Twentyシリーズ )で動作します。
*他のテーマの場合は既にこのような記述があって動作しないかもしれませんのでよくご自身で確認をしてください。

/*
 * 物件詳細テンプレート切替オリジナル
 * 例: 物件カテゴリ 5,8 だけ別のテンプレート(single-fudo2.php)を使用する。
*/

//物件詳細テンプレート切替キャンセル
remove_filter( 'template_include', 'get_post_type_single_template_fudou' );

//新しい 物件詳細テンプレート切替
function get_post_type_single_template_org($template = '') {
	global $wp_query;

	$tax_array = array( '5', '8' );	//切り替えるカテゴリID
	$object = $wp_query->get_queried_object();

	if( !empty( $object->post_type ) ){
		if($object->post_type == 'fudo'){
			if ( has_term($tax_array,'bukken') ) {
				$template = locate_template(array('single-fudo2.php', 'single-fudo.php')); //使用しているテーマのフォルダに設置
			}else{
				$template = locate_template(array('../../plugins/fudou/themes/single-fudo.php', 'single-fudo.php')); //不動産プラグインオリジナル
			}
		}
	}
	return $template;
}
add_filter('template_include', 'get_post_type_single_template_org');

*物件タグの場合は has_term($tax_array,’bukken’) を has_term($tax_array,’bukken_tag’) にしてみてください。
*複数のパターンがある場合は elseif~ 等で、うまく条件分岐させてください。


スポンサードリンク

物件ID の場合は $object->ID で条件分岐させます。


/*
 * 物件詳細テンプレート切替オリジナル
 * 例: 物件ID 25 だけ別のテンプレートを使用する。
*/

//物件詳細テンプレート切替キャンセル
remove_filter( 'template_include', 'get_post_type_single_template_fudou' );

//新しい 物件詳細テンプレート切替
function get_post_type_single_template_org($template = '') {
	global $wp_query;

	$object = $wp_query->get_queried_object();

	if( !empty( $object->post_type ) ){
		if($object->post_type == 'fudo'){
			if ( $object->ID == 25 ) {
				$template = locate_template(array('single-fudo2.php', 'single-fudo.php')); //使用しているテーマのフォルダに設置
			}else{
				$template = locate_template(array('../../plugins/fudou/themes/single-fudo.php', 'single-fudo.php')); //不動産プラグインオリジナル
			}
		}
	}
	return $template;
}
add_filter('template_include', 'get_post_type_single_template_org');

*複数のパターンがある場合は elseif~ 等で、うまく条件分岐させてください。