web-dev-qa-db-ja.com

一般的な単一ページのテンプレートオプション

私は25のWebサイトに共通のテーマを開発しています、デフォルトの要件は完了です。各サイトは異なる単一の投稿テンプレートを持っています。毎回ハードコーディングして共通のプラットフォームを維持する必要がないように、それを単一のテーマとしてグループ化する必要があります。

さまざまなシングル投稿テンプレートはnormal-blog/tab structure/List viewです。私は今自分のテーマのオプションページを作成しています。ドロップ)。タブ、サイドバー、一覧表示、さまざまなカテゴリのテンプレートの保存など、特定のコンポーネントを作成する必要があります。タブの値は、カスタムフィールドの分類法から取得できます。ユーザーは、さまざまなカテゴリ/タグ/分類法のテンプレートを作成して保存することができます。 Egの場合:カテゴリスポーツ、教育用のテンプレート1。

私はそれをやろうとしていますが、私はそれへの手がかりがありません、テーマatuhalpaが近づいたのかもしれません。それを解決する方法。

1
Ezhil

WordPressのノウハウをあまり必要とせずに、ユーザーにsingle.php形式の構造を変更してもらいたいようです(おそらくクライアント用でしょうか)。

このためのオプションページを作成して、ユーザーが好みの構造を選択できるようにすることができます。

あなたのfunctions.phpまたはプラグインでは、WordPressがページをロードするときにフックを使用して関数を呼び出します。次にこの関数はis_single()を使用して、それが単一のページであるかどうかを確認し、WordPressにどの単一のテンプレートが選択されているかを確認させ、 change 呼び出されている(存在する場合はデフォルトでsingle.php)。代わりに、single-normal.phpsingle-tab.phpなど(または単にsingle.php)を呼び出すことができます。その後、さまざまなフォーマット用にこれらのそれぞれを作成します。

例えば:

add_filter('template_include', 'template_switch');
function template_switch( $template ){
    if( is_single()) {
    switch (get_option('single-template')){
            case 'tab':
            $template = locate_template( 'single-tab.php');
            break;

            case 'list':
            $template = locate_template( 'single-list.php');
            break;

            case 'normal':
            $template = locate_template( 'single-normal.php');
            break;
        }  
    }
    return $template;
}

single-normal.phpはおそらく不要です。single.phpを使うことができます。また、オプションページを追加して、 'single-template'オプションをWordpressに登録する必要があります。詳しくは、Codexの オプションリファレンス および オプションページの作成 を参照してください。

明らかにあなたはファイル 'single-normal.php'、 'single-tab.php'などを作成しなければならないでしょう。

Edit:または、switchステートメントを使用するのではなく、本当に賢い方法で(オプションが選択されている場合)単にテンプレートを呼び出します。'single-'.$option.'php'$optionです。 get_option('single-template')。つまり、適切なページを作成し、利用可能なオプションを更新して上記のコードを変更することなく、いつでもテンプレートスタイルを追加できます。D

お役に立てれば!

1
Stephen Harris