こんにちは、
カテゴリーアーカイブページの上部に、そのカテゴリに応じた、イントロや画像を、サブディレクトリにファイルが存在する場合だけ、挿入したいという事ですね
テンプレートから、PHP includeを使うよりもいい方法があります。
<?php
$category_title = single_cat_title('', false);
if( ! empty( $category_title ) ){
$category_title = 'cat-template/'.$category_title.'.php';
locate_template( array( $category_title ), true, true );
}
?>
includeやrequireよりいい点は、
ワードプレスの関数を使えば、テーマがチャイルドテーマであってもペアレントテーマでも、走査して、存在した場合には、require_onceしてくれます。
カテゴリが日本語などの場合は、そのままでは、使えないので、工夫をしてくださいね。
トピック投稿者
poem
(@poem)
nobitaさん、ありがとうございます。
さっそくいただいたコードを使ってみたところhtmlを表示することができました。(.phpを.htmlに変更)
ただ、そのhtmlがないときはカテゴリのタイトルも表示されなくなってしまいました。htmlがない場合はもともとのテーマ(yoko)で使っているタイトルを表示したいです。具体的には以下です。
<h1 class=”page-title”><?php printf( __( ‘カテゴリ: %s’, ‘yoko’ ), ‘<span>’ . single_cat_title( ”, false ) . ‘</span>’ ); ?></h1>
それと日本語のカテゴリもあるのですが、テストしてみたら表示されません。どんな工夫をすればよかったでしょうか。。
locate_template テンプレートは、値をリターンします。
試してはいないのですが、下のような感じで書いてみていただけますか?
$result = locate_template (....);
if( empty( $result ) ){
printf( .... );
}
日本語の件は、id 等で代替するとか、
変換用の配列みたいなもので、
$name_table = array('中華'=>'china');
キー(カテゴリ名)が中華だったら、china.phpという感じで、どうですか?
トピック投稿者
poem
(@poem)
<?php
$category_title = single_cat_title('', false);
if( ! empty( $category_title ) ){
$category_title = 'cat-template/'.$category_title.'.html';
$result = locate_template( array( $category_title ), true, true );
if( empty( $result ) ){
printf( __( '<h1 class="page-title">カテゴリ: %s', 'yoko' ), '<span>' . single_cat_title( '', false ) . '</span></h1>' );
}
}
?>
nobitaさん、上記コードで希望通りの表示することができました。日本語カテゴリに関しては、とりあえず現状必要ないことがわかりましたので、これで大丈夫です。ありがとうございました!