サポート » 使い方全般 » 複数のデザインの違うページを作りたい

  • 解決済 suzukitoro

    (@suzukitoro)


    投稿ページ用のデータベースもとに
    複数のデザインの違うページを作ることは不可能でしょうか?

    今、single_A.phpというphpファイルがあり、ある投稿管理画面のカスタムフィールドのデータを
    利用して、ページが生成されています。
    そのカスタムフィールドのデータをsingle_B.phpという、phpファイルで流用して、デザインの異なる
    ページを作りたいのです。

    仕様的に難しいという意見も聞きましたが、実際のところどうでしょうか?
    ご意見をお伺いしたいです。

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

    実現したいことがちょっとピンとこないところがあるのですが、同じ投稿について、何らかの条件でテンプレートを切り替えたいということでしょうか?
    もしそうだとすれば、どのような場合にどちらのテンプレートを使うかという条件はどのようなものでしょうか?

    例)午前中は A 午後は B
    など

    それとも単に投稿によってテンプレートを変更したいということでしょうか?

    • この返信は1年、 5ヶ月前にmunyaguが編集しました。
    スレッド開始 suzukitoro

    (@suzukitoro)

    お返事ありがとうございます。

    現在フランチャイズの加盟情報を投稿欄のカスタムフィールドに登録して、
    各店舗ごとのページを生成しています。

    このカスタムフィールドのデータベースをもとに、各店舗ごとのLPも別に作成したいと考えております。

    条件によって表示を切り替えるのではなくて、別のURLによって異なるデザインのページができたらいいなと考えています。

    簡単そうにみえるのですが、仕様的に難しいという意見があり、
    以下のようなプラグインで対応するように検討をしているところではあります。
    https://design-remarks.com/wp-multisite-broadcast/

    • この返信は1年、 5ヶ月前にsuzukitoroが編集しました。
    • この返信は1年、 5ヶ月前にsuzukitoroが編集しました。

    加盟店情報の投稿IDを指定すればカスタムフィールドの値を取得することが出来ますので、固定ページ(LP)で投稿のカスタムフィールド値を取得して表示することが出来ます。

    LP の固定ページ投稿画面に加盟店情報の投稿IDを設定するカスタムフィールドを追加し、固定ページ表示時にそのIDをもとに加盟店情報を取得して表示します。

    カスタムフィールドは何かのプラグインで実現されているのでしょうか?
    Advanced Custom Fields であればLPの固定ページで各店舗の投稿を選択するように出来るので、投稿IDを調べて指定する必要がなく便利です。

    スレッド開始 suzukitoro

    (@suzukitoro)

    ありがとうございます。
    良かった。Advanced Custom Fieldsをカスタムフィールドに使っております。
    ちょっと、イメージがつかないのですが。

    例えば、30件の加盟店があり、その数(30件)の投稿記事が登録されています。
    固定ページを利用してのLPを表示するとなると、30件分の固定ページを用意することに
    なりますでしょうか?

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

    私の説明ですと、そうなります。

    URL のパラメータで加盟店の 投稿 ID を渡すことで、1つの固定ページで実現することも可能です。

    URL で加盟店ごとの内容を固定ページとして表示される場合、以下のような感じで LP にアクセスされることを想定しています。

    https://example.com/shop?shop_id=123

    ここでのパラメータ123は加盟店情報の投稿IDです。

    このURLでアクセスされる固定ページのテンプレートには以下のよう加盟店の情報を取得できます。

    if ( isset( $_GET['shop_id'] ) && ctype_digit( $_GET['shop_id'] ) ) {
        $shop_id = $_GET['shop_id'];
        $shop_name = get_field( 'name', $shop_id );
    	$shop_description = get_field( 'description', $shop_id );
    }

    shop_id が渡されなかった場合や、IDに該当する加盟店情報が無い場合の分岐も何か必要と思います。

    スレッド開始 suzukitoro

    (@suzukitoro)

    ありがとうございます。
    固定ページに、カスタムフィールドのデータを利用するアイデアは思いつかなったです。

    https://example.com/shop?shop_id=123
    このURLについてお伺います。

    現在以下のようなURLに、各店舗情報を投稿テンプレートによって生成しています。
    http://example.com/shop/sapporo/
    LPのアドレスを以下のようにする場合は、やはり、固定ページは各店舗ごと用意した方がよろしいでしょうか?」
    http://example.com/shop/lp/sapporo/

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

    LPのアドレスを以下のようにする場合は、やはり、固定ページは各店舗ごと用意した方がよろしいでしょうか?

    http://example.com/shop/lp/sapporo/という URL によるアクセスをどのような方法で実現するかによると思います。

    リライトルールの追加で実現し、且つsapporoという文字列と加盟店情報を紐づけ可能であれば、固定ページは1つで可能だと思います。
    例えば、加盟店情報がsapporoという値を持つカスタムフィールドを持っているなど。

    タクソノミーで階層を実現するのであれば、sapporoという部分のスラッグで固定ページが決まってしまうので各店舗ごとに用意するしかないと思います。

    スレッド開始 suzukitoro

    (@suzukitoro)

    ありがとうございました!
    イメージつかみました。マルチサイトを用意よりもスマートです。
    実際にこの方法で作成していきたいと考えます。

    ところで、一番最初の疑問に戻りますが、
    一つの「カスタム投稿」に対して、対応する「テンプレート(phpファイル)」は一つなのは、
    WP仕様として事実でしょうか?

    仕様です。

    仕様ですが、条件によってget_template_partincludeを使ってインクルードするファイルをかえることで、テンプレートを切替えて表示内容をコントロールすることが出来ます。

    今回で言えば、加盟店情報のスラッグがsapporoであれば、
    http://example.com/shop/sapporo/
    でアクセスされている場合と、リライトルールを追加して
    http://example.com/shop/lp/sapporo/
    でアクセスされている場合とでインクルードファイルを変えるなどです。

    これは最初に申し上げた、

    同じ投稿について、何らかの条件でテンプレートを切り替えたい

    ということにへの対応になります。

    しかし、スラッグ(sapporoにあたる部分)は加盟店情報と店舗では同じではない場合もあるかもと思い、この方法の紹介は避けました。

    スレッド開始 suzukitoro

    (@suzukitoro)

    ありがとうございます。やはり、そこは仕様なのですね。
    でも表示は、調整できるということですね。

    だいぶ理解できるようになりました。
    参考にさせて制作を進めてまいります。

    数日もの間、お付き合いいただきありがとうございました。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「複数のデザインの違うページを作りたい」には新たに返信することはできません。