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ブロック(クラスのページスタイル/機能を含むもの)を繰り返し表示せずに関数を作成することができます理解できません。
アイデア?
これは**実際**子テンプレートのための完璧なユースケースです。 [get_template_part](https://developer.wordpress.org/reference/functions/get_template_part/)のドキュメントを参照してください。多分この記事:https://kovshenin.com/2013/get_template_part/ –
@cale_b私はget_templateを考えましたが、私はそれがどのように機能するかは分かりません。 – Naz