2011-06-14 82 views
-5
<?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; 

} 
?> 
+1

您能否給我們一些更多信息?什麼不行?你會得到什麼錯誤? – PeeHaa 2011-06-14 15:36:30

+2

您發佈的代碼應該會導致第4行('<?php'內的<?php')發生解析錯誤。 PHP代碼在'<?php'和'?>'之間傳遞,外面的所有內容都通過了。 – 2011-06-14 15:37:35

回答

1

線#4你打開,即使舊的還沒有被關閉,一個新的PHP塊。

您需要刪除該行上前面的<?php。你不需要它。

此外:

您的else塊額外endwhile;。 while循環在if (is_home()) {塊內啓動和關閉。

} else if (is_page()) {開頭的代碼不在PHP塊中。您應該打開一個<?php塊或者不關閉前一個塊。

0

在你這樣做了一點:

<?php if (have_posts()) : while (have_posts()) : the_post();?> 

你仍然在「PHP模式」從第一<?php在的頂部腳本,所以這行是一個語法錯誤。您不能將一個<?php ?>塊嵌入另一個塊中。

取出<?phpif,或is_home()東西后早期行添加一個?>

<?php if (is_home()) { ?> 

<?php if (...) ?> 

<?php 
if (is_home()) { 
    if (...) { ?> 

同時,我強烈建議讓display_errorserror_reporting在你的PHP配置中。如果他們在,你必須看到造成額外<?php語法錯誤:

PHP Parse error: syntax error, unexpected '<' in somefile.php on line XXX 
1

第一個php標籤未封閉。關閉並從那裏繼續前進。如果您認爲它主要是一個PHP文件而不是HTML文件,那麼讀取和調試會更容易。也就是說,保持一個PHP標籤打開,直到需要直接的HTML。此時,關閉PHP標籤,編寫HTML,然後重新打開PHP標籤。

相關問題