我对网站上的存档页面有一个非常简单的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>
在页面上向下推一行,而开发人员控制台则显示我上面是一个空的文本节点:
邋wh的空白是一回事;实际上影响我的布局的空白是另一个。我有什么遗漏可能导致这种情况吗?
答案 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(); ?>
我认为你应该移动结束标签,这会搞砸你的标记