为什么PHP / WordPress在这里回显空白?

时间:2011-11-05 13:58:48

标签: php wordpress whitespace

我对网站上的存档页面有一个非常简单的loop

<?php get_header(); ?>
<?php if(have_posts()): ?>
<div id="thumbs-container">
<?php while(have_posts()): the_post(); if(has_post_thumbnail()): ?>
    <div <?php post_class('thumb'); ?>>
        <a href="<?php the_permalink(); ?>">
        <?php the_post_thumbnail('full',array('alt'=>get_the_title(),'title'=>null)); ?>
        <div class="thumb-desc">
            <h2><?php the_title(); ?></h2>
            <p><?php echo get_post_meta($post->ID,'Description',true); ?></p>
        </div>
        </a>
    </div>
<?php endif; endwhile; ?>
</div>
<?php else: get_template_part('no-results'); endif; ?> // <--problem here?
<?php get_footer(); ?>

以下是no-results模板的全部内容

<h2>Nothing here yet.</h2>
<p>Please <a href="<?php bloginfo('url'); ?>/">return to the home page</a>.</p>

由于存档目前为空,因此会按预期显示no-results.php的内容。对页面源的一瞥在<h2>及其包含<div>之间没有显示任何内容(甚至不是空格),但<h2>在页面上向下推一行,而开发人员控制台则显示我上面是一个空的文本节点:

A string of spaces above an H2 element

邋wh的空白是一回事;实际上影响我的布局的空白是另一个。我有什么遗漏可能导致这种情况吗?

3 个答案:

答案 0 :(得分:5)

您是否有机会使用记事本创建no-results模板?

我猜你的模板以UTF-8 Byte order mark开头。使用UTF-8编码保存文件时,默认情况下会将记事本插入。其他一些文本编辑也这样做,但通常可以选择关闭它。

使用不插入BOM的编辑器,或者,考虑到您的模板不包含任何非ASCII字符,只需将其保存为ASCII / ANSI。

答案 1 :(得分:0)

如果在while循环之前,你似乎很接近?

<?php endif; endwhile; ?>似乎错了,因为你打开if拳头和秒秒,所以你应该在最近的第一个订单中关闭它们,例如 <?php endwhile; endif; ?>

答案 2 :(得分:0)

   <?php get_header(); ?>
    <?php if(have_posts()): ?>
    <div id="thumbs-container"><-- this will echoed if there is content
    <?php while(have_posts()): the_post(); if(has_post_thumbnail()): ?>
        <div <?php post_class('thumb'); ?>>
            <a href="<?php the_permalink(); ?>">
            <?php the_post_thumbnail('full',array('alt'=>get_the_title(),'title'=>null)); ?>
            <div class="thumb-desc">
                <h2><?php the_title(); ?></h2>
                <p><?php echo get_post_meta($post->ID,'Description',true); ?></p>
            </div>
            </a>
        </div> <-- here should be the closing tag of thumbs-container
    <?php endif; endwhile; ?>
    </div> <-- the closing tag will be always echoed better moved up
    <?php else: get_template_part('no-results'); endif; ?> // <--problem here?
    <?php get_footer(); ?>

我认为你应该移动结束标签,这会搞砸你的标记