我有麻烦搞清楚什么是错,此代码
问题描述:
<?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;
}
?>
答
线#4你打开,即使旧的还没有被关闭,一个新的PHP块。
您需要删除该行上前面的<?php
。你不需要它。
此外:
您的else
块额外endwhile;
。 while循环在if (is_home()) {
块内启动和关闭。
以} else if (is_page()) {
开头的代码不在PHP块中。您应该打开一个<?php
块或者不关闭前一个块。
答
在你这样做了一点:
<?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 (...) { ?>
同时,我强烈建议让display_errors
和error_reporting
在你的PHP配置中。如果他们在,你必须看到造成额外<?php
语法错误:
PHP Parse error: syntax error, unexpected '<' in somefile.php on line XXX
答
第一个php标签未封闭。关闭并从那里继续前进。如果您认为它主要是一个PHP文件而不是HTML文件,那么读取和调试会更容易。也就是说,保持一个PHP标签打开,直到需要直接的HTML。此时,关闭PHP标签,编写HTML,然后重新打开PHP标签。
您能否给我们一些更多信息?什么不行?你会得到什么错误? – PeeHaa 2011-06-14 15:36:30
您发布的代码应该会导致第4行(''之间传递,外面的所有内容都通过了。 – 2011-06-14 15:37:35