web-dev-qa-db-ja.com

スワップアウト可能な複数のfront-page.phpテンプレートを用意する方法

私は本質的に異なるループとレイアウトを持ついくつかの異なるfront-page.phpテンプレートを作成し、そしてある日に1つのテンプレートと別の日に別のテンプレートを選択するオプションを管理者パネルに提示したいです。

これは、Wordpressをだまして、フロントページとして表示する静的ページを選択し、ページ編集画面からカスタムページテンプレートを選択することで実現できます。 loop - wouldが私のfront-page.phpオプションになっているいくつかのカスタムページテンプレートのうちの1つ。

もう1つの方法は、1つのfront-page.php内のifステートメントですべての私のループとカスタムレイアウトを囲み、毎回ifステートメントの1つを使用するオプションを提示することです。 (これは合理的に思えますが、私にとっては少し不器用ですが、それほど素晴らしいものではなく、ロード時間が長くなるなどの問題があるようです。)

私が欠けているオプションはありますか?それとも私のためにこれを行うプラグイン?静的ページに頼らなくてもfront-page.php/index.phpページとして表示するテンプレートのリストから選択できるプラグインが見つからなかったことに驚きました。ハック - ループやホームページのレイアウトのバリエーションは一般的な要求です。

5
Edmund Heaphy

1つの方法は、単一のfront-page.phpを作成してからget_template_part()を使用して、ユーザーの選択に基づいて異なるコンテンツを表示することです。

大まかなコード:

get_header();

$layout = get_option( 'front_page_layout', 'default' );
get_template_part( 'front-page', $layout );

get_footer();

その後、すべてのレイアウトに対してファイルを作成する必要があります。それらを呼び出す必要があります。

  • front-page-one.php
  • front-page-two.php
  • front-page-three.php
  • front-page-default.php

最後のものは、オプションが設定されていない場合に使用されます。テーマがアクティブ化されたばかりのとき。

もちろん、ユーザーがテンプレートを選択して「front_page_layout」オプションを保存できるバックエンドのページが必要です。

front-page.phpを1つだけ持つことは、コードを見なくても、あなたのテーマを見ている人なら誰でも簡単に認識できます。

もう1つの方法は、デフォルトのレイアウトを含めるためにfront-page.phpを使用することです。その後、 ページテンプレート を使用していくつかの代替レイアウトを作成できます。

/*
Template Name: Home Page Alternative One
*/

このようにして、あなたのユーザはページを作成し、あなたが作成したテンプレートの1つをそれに割り当て、そして最後に 読書設定 の最初のページとしてこのページを設定することができます。

初めての後、ホームページのレイアウトを変更するためにユーザーは静的フロントページとして選択するページのページテンプレートを変更するだけでよいです。

この2番目のオプションでは、ユーザーにもう少し手間がかかりますが、テーマ設定ページで 'front_page_layout'オプションを設定する場所を確保できません。

5
gmazzap

唯一の選択肢は、ページテンプレートです。これは、テーマの99%がどのように機能するのか、そしてWordpressのユーザーや実装者が慣れていることです。あなたはユニークになろうとすることができますが、だれもそれを認めないでしょう。

1
Mark Kaplun