我有以下代码缺少某个部分,以确定要使用哪个“post
”。
HTML
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
$postAlign = get_post_meta( get_the_ID(), 'postType', true );
if ( $postAlign == 'Lsection' ) {
get_template_part( 'article' , 'Lsection' );
}
else {
get_template_part( 'article' , 'Rsection' );
}
else {
get_template_part( 'article' , 'Fsection' );
}
?>
<?php endwhile; ?>
<?php endif; ?>
我想要的是什么
如果帖子有' Lsection '的帖子,请使用article-Lsection.php
,
如果帖子有' Rsection '的postAlign,请使用article-Rsection.php
,
如果帖子的帖子是' Fsection ',请使用article-Fsection.php
我知道我必须有一个其他if或类似的函数被激活
答案 0 :(得分:0)
else
块不应该跟随另一个else
块。请参阅下面的修改后的if-else if
块。有关格式化控件结构的详细信息,请参阅php.net页面:elseif/else if
if ( $postAlign == 'Lsection' ) {
get_template_part( 'article' , 'Lsection' );
}
else if ($postAlign == 'Rsection') {
get_template_part( 'article' , 'Rsection' );
}
else {
get_template_part( 'article' , 'Fsection' );
}
您还可以使用switch
语句 - 例如:
switch($postAlign) {
case 'Lsection':
case 'Rsection':
get_template_part( 'article' , $postAlign );
break;
default:
get_template_part( 'article' , 'Fsection' );
break;
}
或者只是简化它:
if ( $postAlign == 'Lsection' || $postAlign == 'Rsection') {
get_template_part( 'article' , $postAlign );
}
else {
get_template_part( 'article' , 'Fsection' );
}
另外,你有没有理由使用alternate syntax for control structures和多余的关闭/打开php标签?您应该能够简化它,如下所示:
<?php
//if ( have_posts() ) { //
while ( have_posts() ) {
the_post();
$postAlign = get_post_meta( get_the_ID(), 'postType', true );
if ( $postAlign == 'Lsection' || $postAlign == 'Rsection') {
get_template_part( 'article' , $postAlign );
}
else {
get_template_part( 'article' , 'Fsection' );
}
}//end while
//}//end if
//only need one closing php tag down here:
?>
修改强>
要证明这一点,请参阅this PHPfiddle。随意在那里创建一个帐户并使用代码。请注意,它会根据get_templatepart()
的值,使用各种第二个参数调用$postAlign
。