2016-03-21 16 views
1

WordPressテーマを作成していて、サイドバーの設定(none、left、right)の設定でオプションパネルを作成しましたが、各ページのポストに設定を追加しました、left、right、none)で、一般的なオプションをオーバーライドします。関数を使用して重複を減らす

私のindex.phpページでこれを動作させるには、次のコードがあります。

<?php get_header(); ?> 

<?php  

// Sidebar position selected on the page/post 
$IndivSidebarPosition = get_field('sidebar'); 

// Default sidebar position for the site. 
$DefaultSidebarPosition = sprintf(get_theme_mod('graviton_sidebar_position')) ; 

if($IndivSidebarPosition == 'left' || $IndivSidebarPosition == 'right') { 

    $SidebarPosition = $IndivSidebarPosition; 

} else { 

    $SidebarPosition = $DefaultSidebarPosition; 
} 


?> 

    <div class="container"> 

     <div class="row"> 

      <?php if ($IndivSidebarPosition != 'none' and $DefaultSidebarPosition != 'none') { 

     echo '<div class="wrapper">'; 
      echo '<div class="col-xs-12 col-sm-3 col-md-3 sidebar '.$SidebarPosition.'-sidebar">'; 
        get_sidebar(); ?> 

       </div> 

       <div class="col-xs-12 col-sm-12 col-md-9 feature"> 

        <div class="col-xs-12 col-sm-12 col-md-12 page-style"> 

        <?php 

         if(have_posts()): 

          while(have_posts()): the_post(); ?> 

          <div class="col-xs-12 col-sm-12-col-md-12"> 

           <?php the_content(); ?> 

          </div> 

          <?php endwhile; 

         endif; 

        ?> 

        </div> 
       </div> 

      </div> 

      <?php } else { ?> 


      <div class="col-xs-12 col-sm-12 col-md-12 page-style"> 

      <?php 

       if(have_posts()): 

        while(have_posts()): the_post(); ?> 

        <div class="col-xs-12 col-sm-12-col-md-12"> 

         <?php the_content(); ?> 

        </div> 

        <?php endwhile; 

       endif; 

      ?> 

      </div> 

      <?php } ?> 

     </div> 

    </div> 

<?php get_footer(); ?> 

コードが正常に動作します、しかし、いくつかのテンプレートがはるかに複雑で、特に以来、私はいくつかのページとページテンプレートにこれをコピーしなければならないと私はそれが重複たくさんのことだと思います。 $ SidebarPositionを割り当てるテキストの最初のブロックは、function.phpファイル内の関数にすることができると思います。しかし、私はどのように私はメインdivブロック(クラスのページスタイル/機能を含むもの)を繰り返し表示せずに関数を作成することができます理解できません。

アイデア?

+0

これは**実際**子テンプレートのための完璧なユースケースです。 [get_template_part](https://developer.wordpress.org/reference/functions/get_template_part/)のドキュメントを参照してください。多分この記事:https://kovshenin.com/2013/get_template_part/ –

+0

@cale_b私はget_templateを考えましたが、私はそれがどのように機能するかは分かりません。 – Naz

答えて

0

テンプレートファイルを使用して、必要なときに呼び出すことができます。たとえば、1つのファイルに必要なレンダリングまたは特定のPHP + HTMLコードだけをファイルに含めることができます。必要に応じてインクルードします。あなたは出力を必要とするたびに関数を呼び出す必要がありますが、すべてが単一のファイルに含まれています。これを実現するために、このリンクをクリックしてください:

https://developer.wordpress.org/reference/functions/get_template_part/

+0

私はget_templateを考慮しましたが、それがどのように動作するかはわかりません。私は何を得ているのですか? – Naz

関連する問題