カテゴリー毎にテンプレートを変えていく方法を教えてください

0
いいねをした人: 居ません
  • このトピックには6件の返信、2人の参加者があり、最後にGhichiにより5年、 8ヶ月前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #3734
    Ghichi
    参加者
    0

    テンプレート階層のルールに基づいて、テンプレートを用意していけば良いのですが、テーマの構造が通常のものと異なるので教えてください。

    たとえば、投稿ページのカテゴリーごとにデザインを変えるとき、テンプレートの階層構造に従って、
    category-[slug].php
    header-[slug].php
    footer-[slug].php
    sidebar-[slug].php
    と、作成をしていき、
    header 部で、個々に css ファイルをリンクなどさせればよろしいかと思いますが、
    snow-monkey でその設定をどう行えば良いのか分からないでおります。

    0
    いいねをした人: 居ません
    #3757
    キタジマ タカシ
    参加者
    2244

    子テーマでテンプレートを上書きすると、親テーマ(ここでは Snow Monkey ですね)のアップデートが子テーマに反映されないという問題がどうしても発生します。

    そのため、親テーマでは「いかに最小単位で必要な部分だけを子テーマで上書きできるようにするか」というのが大事になってくるのですが、Snow Mokey では独自のテンプレート構造を用いることでそれを実現しています。

    Snow Monkey の基本的なテンプレート構造は次のようになっています。

    (カテゴリーページの場合)

    • archive.php
      • 大枠のレイアウトが定義されたレイアウトファイル ( templates/layout/xxxx.php ) の読み込み
      • コンテンツ部分が定義されたビューファイル ( templates/view/archive-投稿タイプ.php ) の読み込み

    それぞれにどのようなコードを書けば良いかは Snow Monkey のレイアウトファイル、ビューファイルを参考にしてもらえればと思いますが、ヘッダー、サイドバー、フッターの読み込みについては、これも独自のコードで読み込むようになっておりまして、それぞれ次のようになります。

    • ヘッダーファイルの読み込み ( wpvc_get_header( 'xxxx' )/templates/layout/header/xxxx.php を読み込み )
    • サイドバーファイルの読み込み ( wpvc_get_sidebar( 'xxxx' )/templates/layout/sidebar/xxxx.php を読み込み )
    • フッターファイルの読み込み ( wpvc_get_footer( 'xxxx' )/templates/layout/footer/xxxx.php を読み込み )

    大枠レベルでデザインを変えたい場合

    子テーマで変更しやすいようにカテゴリー専用のファイルは用意していないので archive.php 起点になっていますが、もしヘッダー・フッター・サイドバーとか大枠レベルでカテゴリーごとにデザインを変えたい場合は category-slug.php を作成し、その次のように記述します。

    if ( have_posts() ) {
        $controller->render( 'category-slug' );
    } else {
        $controller->render( 'none' );
    }

    そして、/templates/layout/wrapper/category-slug.php を作成して大枠の HTML を記述、/templates/view/category-slug.php を作成してビュー部分の HTML を記述、という手順になります。

    ビュー部分(一覧が並ぶ部分)だけデザインを変えたい場合

    いろいろやり方はありますが、たぶん次の方法がベストだと思います。

    category-slug.php を作成し、その次のように記述します。

    if ( have_posts() ) {
        $controller->render( 'category-slug' );
    } else {
        $controller->render( 'none' );
    }

    そして、/templates/view/category-slug.php を作成してビュー部分の HTML を記述してください。

    カテゴリーごとに異なる CSS ファイルを読み込ませる

    header 部で、個々に css ファイルをリンクなどさせればよろしいかと思いますが、

    と書かれていましたが、WordPress は header.php などに直接 link タグで CSS を読み込むことを推奨していません。CSS の読み込みは wp_enqueue_scripts アクションフックの中で、wされています。wp_enqueue_style を使っておこなうことが推奨されています。例えば、子テーマの functions.php に次のように記述します。

    add_action( 'wp_enqueue_scripts', function() {
        if ( is_category( 'slug' ) ) {
            wp_enqueue_style( 'category-slug', get_stylesheet_directory_uri() . 'category-slug.css' );
        }
    } );

    多分これを読んでも初見ではなかなか慣れなくて難しいと思いますので、ちょっと試されてみて、またご質問いただければと思います(慣れればこのような構成にしている利点が見えてくると思います…!)

    0
    いいねをした人: 居ません
    #3844
    Ghichi
    参加者
    0

    丁寧にお応えを頂いてありがとうございます。精査をしまして、改めてお伺いいたします。

    0
    いいねをした人: 居ません
    #4385
    Ghichi
    参加者
    0

    北島さん

    カテゴリー毎にテンプレートを変えていく方法が分かりました。
    ありがとうございます。

    この記事が参考になりました。
    「WordPress 有料テーマ Snow Monkey の基本的な構造について …」

    カテゴリーごとに、投稿ファイルをカスタマイズをしていくにはどうしたらよろしいですか?

    通常ですと下記のような感じになると思うのですけれど、・・・・。

    「【メモ (WordPress)】 投稿ページのカテゴリ毎に異なるヘッダーを使うには」

    「カテゴリー別にページのテンプレートやデザインを変更する方法」

    0
    いいねをした人: 居ません
    #4407
    Ghichi
    参加者
    0

    *上記質問は別投稿にした方がよかったでしょうか?

    この投稿の前半の課題に戻りますが、

    > ヘッダーファイルの読み込み ( wpvc_get_header( ‘xxxx’ ) で /templates/layout/header/xxxx.php を読み込み )

    この記述において、

    > そして、/templates/layout/wrapper/category-slug.php を作成して大枠の HTML を記述、

    wrapper カテゴリーの中の一つのファイルの HTML 記述を複製して、

    「category-slug.php」を作成したとします。

    この中の

    <?php wpvc_get_header(); ?>

    部分をカスタマイズしたいのですが、うまくいきません。

    例えば、

    wrapper カテゴリーの中の一つのファイル one-column-fluid.php を複製して、

    「category-slug.php」を作成したとします。

    この中の

    <?php wpvc_get_header(); ?> を編集かけても表示に変化が見られません。

    どこかで読み間違いなどありましたら、ご指摘を頂けると助かります。

    0
    いいねをした人: 居ません
    #4495
    キタジマ タカシ
    参加者
    2244

    わかりずらくすみません、、コード見ながらとなりで説明できれば多分一発だと思うのですが、文章にするとスマートに説明しづらくて。

    えと、/templates/layout/wrapper/category-slug.php は大枠のレイアウトファイルになりますが、メインテンプレートから「/templates/layout/wrapper/category-slug.php を使いたい」という指定をしなければなりません。

    ここでいうメインテンプレートとは、/子テーマ/category.php とか、/子テーマ/category-slug.php とか、/子テーマ/single.php とかになります。

    まとめると、

    1. /子テーマ/category-slug.php を作成

    <?php
    $controller = new Mimizuku_Controller();
    
    // layout/wrapper/category-slug.php をレイアウトファイルとして使用
    $controller->layout( 'category-slug' );
    if ( have_posts() ) {
    	// 記事があるときは view/archive.php をビューファイルとして使用
    	$controller->render( 'archive' );
    } else {
    	// 記事が無いときは view/none.php をビューファイルとして使用
    	$controller->render( 'none' );
    }

    2. /子テーマ/templates/layout/wrapper/category-slug.php を作成

    /snow-monkey/template/layout/wrapper 内の適当なファイルをコピペして改変する

    0
    いいねをした人: 居ません
    #4522
    Ghichi
    参加者
    0

    お応えありがとうございます。

     

    検討して改めてご返事をいたします。

    0
    いいねをした人: 居ません
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。