<?php
if ( is_home() ) {
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
<div id="post">
<?php the_content(); ?>
</div>
<?php endwhile;?>
<?php endif; ?>
} else if (is_page() ) {
$category = get_post_meta($posts[0]->ID, 'category', true);
}
if ($category) {
$cat = get_cat_ID($category);
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$post_per_page = 4; // -1 shows all posts
$do_not_show_stickies = 1; // 0 to show stickies
$args=array(
'category__in' => array($cat),
'orderby' => 'date',
'order' => 'DESC',
'paged' => $paged,
'posts_per_page' => $post_per_page,
'caller_get_posts' => $do_not_show_stickies
);
$temp = $wp_query; // assign orginal query to temp variable for later use
$wp_query = null;
$wp_query = new WP_Query($args);
if( have_posts() ) :
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div id="post">
<?php the_content(); ?>
</div>
<?php endwhile; ?>
<?php endif;
$wp_query = $temp;
}
?>
答案 0 :(得分:1)
在第4行,您正在打开一个新的PHP块,即使旧的块尚未关闭。
您需要删除该行的前一个<?php
。你不需要它。
此外:
endwhile;
块中有额外的else
。 while循环在if ( is_home() ) {
块内启动和关闭。
以} else if (is_page() ) {
开头的代码不在PHP块中。您应该打开<?php
块或不关闭前一个块。
答案 1 :(得分:1)
第一个php标签未公开。关闭它并从那里继续前进。如果您认为它主要是PHP文件而不是HTML文件,那么读取和调试会更容易。也就是说,在需要直接HTML之前,保持php标记处于打开状态。此时,关闭PHP标记,编写HTML,然后重新打开PHP标记。
答案 2 :(得分:0)
您可以这样做:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
你仍然处于脚本顶部第一个<?php
的“php模式”,所以这一行是语法错误。您不能将一个<?php ?>
块嵌入另一个块中。
在<?php
之前移除if
,或在之前的行?>
之后添加is_home()
:
<?php if (is_home()) { ?>
<?php if ( ...) ?>
或
<?php
if (is_home()) {
if (...) { ?>
同样,我强烈建议在PHP配置中启用display_errors
和error_reporting
。如果它们已启用,您将看到由额外<?php
:
PHP Parse error: syntax error, unexpected '<' in somefile.php on line XXX