当我尝试将循环插入无序列表时出现语法错误?

时间:2014-08-13 作者:AndreaNobili

我是PHP和WordPress开发方面的新手,在尝试将一些HTML代码插入posts循环时遇到以下问题。

我试过类似的方法:

<?php
if (have_posts()) :
    <ul>
    // Start the Loop.
    while (have_posts()) : the_post();

        /*
         * Include the post format-specific template for the content. If you want to
         * use this in a child theme, then include a file called called content-___.php
         * (where ___ is the post format) and that will be used instead.
         */

        <li>
        get_template_part(\'contentArchive\', get_post_format());
        </li>

    endwhile;
    </ul>


    endwhile;
?>
正如你所看到的,我想要一个无序的列表(< ul>标记)并在其中放入一个列表元素(< li> 标签)的每个迭代while 循环,但Aptana Studio在<ul><li>

为什么?问题出在哪里?我怎样才能修复它?

Tnx公司

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您没有向文件中添加HTML代码,而是添加了无效的PHP。

综上所述,在PHP中<?php?> 是PHP代码。

所以这是有效的PHP:

<?php echo \'hello world\';! ?>
这也是有效的:

<b><?php echo \'hello world\'; ?></b>
这是无效的:

<?php <b> echo \'hello world\'; </b> ?>
为什么?因为是无效的PHP。这是一个有效的HTML标记是的,但你没有把它放在HTML中,你把它放在标记之间,所以它是PHP代码,它不是有效的PHP代码。

旁注:代码缩进不正确。任何一个好的编辑器都会自动神奇地为你做这件事,PHPStorm有一个重新格式化选项,在你键入时自动缩进,节省你自己的时间和精力,并使用一个为你做这件事的编辑器。缩进使代码更容易阅读,更容易发现错误,使用括号代替速记,例如。if( this ) { do that }, 它在编辑和校对人员中得到了更广泛的支持。添加杂散太容易了endwhile; 语句(您的原始代码有1个while循环,但您将其关闭了两次,这没有任何意义,只会造成混淆)。如果您使用{} 好的编辑器会自动为您键入右括号并相应缩进

<?php
if ( have_posts() ) {
    echo \'<ul>\';
    while ( have_posts() ) {
        the_post();
        echo \'<li>\';
        get_template_part( \'contentArchive\', get_post_format() );
        echo \'</li>\';
    }
    echo \'</ul>\';
}
更改:

使用echo打印html,删除多余的空行并转换为制表符,使用大括号代替PHP速记语法,如果最后一个是PHP代码,则PHP文件末尾不需要结束标记

SO网友:Abhik

您在不关闭php标记的情况下包含HTML元素。另外,最后一个应该是endif, 不endwhile.

<?php
if (have_posts()) : ?>

    <ul>

    <?php
        // Start the Loop.
        while (have_posts()) : the_post();

            /*
             * Include the post format-specific template for the content. If you want to
             * use this in a child theme, then include a file called called content-___.php
             * (where ___ is the post format) and that will be used instead.
             */
    ?>

        <li>
            <?php 
                get_template_part(\'contentArchive\', get_post_format());
            ?>
        </li>

    <?php
        endwhile;
    ?>

    </ul>

    <?php
        endif;
?>

结束

相关推荐

插件生成意外输出-没有PHP错误

我正在创建一个插件,创建一个我正在处理的自定义帖子类型。我跟着this tutorial. 我刚刚将其从movie\\u reviews更改为员工。我在PHP中没有发现任何语法错误,看起来一切正常,但当我在WordPress中激活插件时,它说它生成了3个字符的意外输出。我认为问题在于display\\u staff\\u member\\u meta\\u box函数,但它似乎没有任何错误。下面是我正在使用的代码。<?php /* Plugin Name: Staff Members