サポート » 使い方全般 » カテゴリページの上部にカテゴリ別のHTML読み込み

  • 解決済 poem

    (@poem)


    こんにちは。どなたかご助言いただけるとうれしいです。

    カテゴリページの上部にそのカテゴリに合ったHTMLを読み込みたいと思っています。カテゴリを指定してincludeでいけると思うのですが、カテゴリの数が多いため動的に指定したいと思っています。

    カテゴリ「ABC」のときは/cat-template/ABC.htmlを読み込み、
    カテゴリ「DEF」のときは/cat-template/DEF.htmlを読み込み……
    さらに/cat-templateに当該「カテゴリ名.html」が存在しない場合は、外部HTMLは読み込まず<h1>(カテゴリ名)</h1>をそのまま表示、
    としたいです。

    つまり、cat-templateフォルダにhtmlファイルを入れることでそのカテゴリで外部コンテンツを表示するか否かをコントロールしたいということです。

    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは、

    カテゴリーアーカイブページの上部に、そのカテゴリに応じた、イントロや画像を、サブディレクトリにファイルが存在する場合だけ、挿入したいという事ですね

    テンプレートから、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さん、上記コードで希望通りの表示することができました。日本語カテゴリに関しては、とりあえず現状必要ないことがわかりましたので、これで大丈夫です。ありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カテゴリページの上部にカテゴリ別のHTML読み込み」には新たに返信することはできません。