这快把我逼疯了,我相信一旦有人指出答案,我会觉得自己很傻。
我有一个网站,大多数页面都需要登录才能查看。因此,如果用户登录,我将使用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。那么,为什么这在模板文件的开头起作用,而在头文件的结尾不起作用呢?
最合适的回答,由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
}