在wordpress循环中添加新参数

时间:2016-11-04 04:21:41

标签: php wordpress

我有以下代码缺少某个部分,以确定要使用哪个“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或类似的函数被激活

1 个答案:

答案 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