2016-03-21 19 views
1

Bir WordPress teması oluşturuyorum ve kenar çubuğu konumu (hiçbiri, sol, sağ) için bir ayar içeren bir seçenekler paneli oluşturdum ancak her sayfa gönderimine bir ayar ekledim (varsayılan) genel seçenekleri geçersiz kılan sol, sağ, hiçbiri).Çoğaltmayı azaltmak için bir işlev kullanmak

Bu işi index.php sayfamda yapmak için aşağıdaki koda sahibim; kod çalışıyor

<?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(); ?> 

Ancak ben birkaç sayfa ve sayfa şablonları için bu kopyalamak zorunda kalacak ve bunun bazı şablonları çok daha karmaşıktır, özellikle de çoğaltma çok olacağını düşünüyorum. Ben $ SidebarPosition atanan ilk metin bloğu function.php dosyasında bir işlev yapılabilir olduğunu düşünüyorum. Ancak, ana div bloğunu (sınıfların sayfa stilini/özelliğini içeren) tekrarlama olmadan nasıl görüntüleyeceğini anlayamıyorum.

Herhangi bir fikrin var mı?

+0

Bu ** aslında bir ** çocuk şablonu için mükemmel kullanım durumdur. [Get_template_part] (https://developer.wordpress.org/reference/functions/get_template_part/) belgesine ve belki de bu makaleye bakın: https://kovshenin.com/2013/get_template_part/ –

+0

@cale_b get_template'i dikkate aldım ama Bunun nasıl olacağını göremiyorum. – Naz

cevap

0

Şablon dosyalarını kullanabilir ve ihtiyaç duyduğunuz anda bunları arayabilirsiniz. Örneğin, bir dosyada ihtiyacınız olan bir render veya belirli bir PHP + HTML kodu olabilir ve ihtiyacınız olduğunda ekleyin. Çıkışı istediğiniz her seferinde yine de fonksiyonu çağırmanız gerekir, ancak her şey tek bir dosyada bulunur. Bunu başarmak için, bu bağlantıyı takip edin:

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

+0

Get_template'i düşündüm ama bunun nasıl olacağını göremiyorum. Ben 'alıyorum' nedir? – Naz

İlgili konular