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ı?
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/ –
@cale_b get_template'i dikkate aldım ama Bunun nasıl olacağını göremiyorum. – Naz