我正在创建一个WordPress主题,我创建了一个选项面板,其中包含侧边栏位置(无,左,右)的设置,但我还为每个页面帖子添加了一个设置(默认,左,右,无)它取代了一般选项。
要在我的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 :(得分:0)
您可以使用模板文件并在需要时调用它们。例如,您可以在文件中只包含一个文件中所需的渲染或特定PHP + HTML代码,并在需要时包含它。每次需要输出时,您仍然需要调用该函数,但所有内容都包含在一个文件中。要实现这一目标,请点击此链接:
https://developer.wordpress.org/reference/functions/get_template_part/