【问题标题】:I am having trouble figuring out what is wrong with this code [closed]我无法弄清楚这段代码有什么问题[关闭]
【发布时间】:2011-06-14 15:34:25
【问题描述】:
<?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 行出现解析错误(&lt;?php&lt;?php)。 PHP 代码在&lt;?php?&gt; 之间传递,外面的一切都通过了。

标签: php wordpress


【解决方案1】:

在第 4 行,您正在打开一个新的 PHP 块,即使旧的尚未关闭。

您需要删除该行前面的&lt;?php。你不需要它。

另外:

您的else 块中有一个额外的endwhile;。 while 循环在 if ( is_home() ) { 块内启动和关闭。

} else if (is_page() ) { 开头的代码不在PHP 块中。您应该打开一个&lt;?php 块或不关闭前一个块。

【讨论】:

    【解决方案2】:

    第一个 php 标签未闭合。关闭它并从那里继续。如果您认为它主要是一个 PHP 文件而不是 HTML 文件,它会更容易阅读和调试。也就是说,在需要直接 HTML 之前,保持 php 标记处于打开状态。此时,关闭 PHP 标记,编写 HTML,然后重新打开 PHP 标记。

    【讨论】:

      【解决方案3】:

      在你这样做的时候:

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

      从脚本顶部的第一个&lt;?php 开始,您仍处于“php 模式”,因此这一行是语法错误。您不能将一个 &lt;?php ?&gt; 块嵌入到另一个块中。

      删除if之前的&lt;?php,或在前一行的is_home()之后添加?&gt;

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

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

      同样,我强烈建议在您的 PHP 配置中启用 display_errorserror_reporting。如果它们打开,您会看到由额外的&lt;?php 引起的语法错误:

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

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 2018-05-16
        • 2013-11-21
        • 2011-08-15
        • 1970-01-01
        • 2021-04-26
        • 2012-03-15
        相关资源
        最近更新 更多