singular.php で特定の条件下にてデフォルト以外のテンプレートを呼び出したい

4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • 投稿者
    投稿
  • #37407
    mokeco
    参加者

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】 8.2.0
    【お使いのブラウザ】Chrome
    ===
    お世話になります。
    とあるプラグインでカスタム投稿タイプが自動的に作成され、そのカスタム投稿タイプが「投稿」の形になっています。
    ブログは2カラム、「とあるプラグイン」で作成したページは1カラムで表示させたいのですが、プラグインの仕様なのかバグなのか、投稿する際のテンプレートを「デフォルト」以外にするとアーカイブページが壊れてしまいました(なぜか singular.php で表示しようとしている…)。

    デフォルトのままなら問題ないという点がわかったので、singular.php 側でカスタム投稿タイプか通常の投稿かを判断して特定のカスタム投稿タイプであれば one-column.php を使用する形を取ろうとしています。

    子テーマにて、page-templates を親テーマからコピーした上で singular.php に以下のように記入しました。

    use Framework\Controller\Controller;
    
    if (!is_singular(‘customposttypename’)){
       Controller::layout( get_theme_mod( ‘singular-post-layout’ ) );
       Controller::render( ‘content’, get_post_type() );
    } elseif (is_singular(‘customposttypename’)) {
       get_template_part( 'page-templates', 'one-column' );
    }

    すると、通常の投稿やページの投稿は問題ないのですが、
    “elseif” のほうは

    Notice: page-templates が見つかりません。削除または移動された可能性があります。 in /home/hoge/example.jp/public_html/stg.example.jp/wp-content/themes/snow-monkey/vendor/inc2734/wp-view-controller/src/setup/debug-template-overwrite.php on line 42
    

    というエラーが出てしまいました。
    ほかにももともと書かれていたコードを参考にいろいろ試したりなどしたのですが、基本的に上記エラーが表示されてしまいます。
    この場合、どのようにカスタマイズすれば良いでしょうか?

    #37460
    キタジマ タカシ
    キーマスター

    「とあるプラグイン」は wp.org で公開されているプラグインでしょうか? もしそうであって、教えていただくことが可能であれば教えてほしいです(公言できない場合は DM でも構いません)。

    Snow Monkey はコントローラー/ビューテンプレートの仕組みを独自につくっているため、普通のテーマとは最初に呼びだされるテンプレートの呼びだし方がちょっと違います。そのため、プラグインの最初のテンプレートの呼びだし方によっては正しく表示されないということが起こりえます。もし公開されているプラグインで、こちらで検証が可能であれば、Snow Monkey 自体に修正を入れてそのプラグインの場合は特別なテンプレートの呼び方をする、というような対応も可能かと思いまして。

    singular.php で対応する場合、下記のようにするとどうなりますでしょうか?

    use Framework\Controller\Controller;
    
    if ( !is_singular( 'customposttypename' ) ) {
       Controller::layout( get_theme_mod( 'singular-post-layout' ) );
    } elseif (is_singular( 'customposttypename' ) ) {
       Controller::layout( 'one-column' );
    }
    Controller::render( 'content', get_post_type() );

    Controller::layout()templates/layout/wrapper の中にあるレイアウトファイルを指定しています。Controller::render()templates/view の中にあるビューファイルを指定しています。

    上記の場合だと投稿タイプが customposttypename の投稿の場合は1カラムのレイアウトファイルを使い、それ以外の投稿の場合はカスタマイザーで設定されたレイアウトを使用する、ということになります。

    #37480
    mokeco
    参加者

    ありがとうございます。
    提示いいただいたコードで、やりたいことを実現できました!
    まだ SnowMonkey を使い始めたばかりですが、カスタマイズについて今後も勉強させていただきます。

    「とあるプラグイン」は wp.org 上で配布されているものではない「HBook」という宿泊施設予約の有料プラグインで、使用するにはライセンスコードが必要になりますが、一応当該プラグインへのリンクを張っておきます。

    よろしくお願いいたします。

    #37629
    キタジマ タカシ
    キーマスター

    解決できて良かったです!

    プラグインの情報もありがとうございます。無料版あるかな?と軽くググってみましたがなさそうですね…(TT

    トピック閉じます!

4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • トピック「singular.php で特定の条件下にてデフォルト以外のテンプレートを呼び出したい」には新しい返信をつけることはできません。