PHP if语句可以在模板文件中使用,但不能在头文件中使用

时间:2012-06-06 作者:Morgan Kay

这快把我逼疯了,我相信一旦有人指出答案,我会觉得自己很傻。

我有一个网站,大多数页面都需要登录才能查看。因此,如果用户登录,我将使用if语句查看页面内容,如果用户未登录,则查看登录表单。

如果我将其放在页面模板中,一切正常:

<?php get_header(); ?>

<?php if(is_user_logged_in()): ?>

    <div id="wrapper">
        <h5><?php the_field(\'headline\'); ?></h5>
        <?php the_field(\'text\'); ?>
    </div>

<?php else:

    $args = array( \'pagename\' => \'request-access\' );
    $the_query = new WP_Query( $args );

    if ( $the_query->have_posts() ) :
        while ( $the_query->have_posts() ) : $the_query->the_post();
            the_content();
        endwhile;
    endif;

    wp_reset_postdata();

endif; ?>

<?php get_footer(); ?>
这很好,但将if语句放在页眉中更有意义,这样我就不必将其复制到每个页面模板上。但如果我用完全相同的if语句:

<?php if(is_user_logged_in()): ?>

在收割台的末端。php,我在标题的最后一行收到一个错误,上面写着“Parse error:syntax error,unexpected$end”。php。那么,为什么这在模板文件的开头起作用,而在头文件的结尾不起作用呢?

1 个回复
最合适的回答,由SO网友:Tommixoft 整理而成

因为php文件的结尾是:而不是放在标题的末尾endif; php希望它完成您的IF。

换句话说,如果不以IF结尾,则不能以这种方式在标题中使用此项。或者,您必须在标题中为其创建全局变量和asign值[如果登录,则为true],以便主题中的其他php可以使用它,或者您必须在每个想要限制某些内容的php中使用此代码:

if(is_user_logged_in()) {
your code for logged in visitors
} else {

your code for guests

}

结束

相关推荐

从sidesbar.php的循环中排除当前帖子ID

目前,下面所有代码都显示了来自当前页面所在类别的3篇随机帖子。因此,如果当前页面属于“艺术家”类别,例如,请在页面的下面显示“艺术家”类别中的3篇随机帖子。我的问题是,当前帖子一直出现在这一部分中,我想将其排除在外,但无法使用我当前的循环来解决此问题。这是我的循环:<?php if ( in_category( \'artists\' ) ) { ?> <h2>Similar articles</h2>