WordPress single.php重排文章元素 作者调用及特色图背景问题
WordPress单篇文章模板作者调用&特色图背景实现方案
问题1:作者信息调用的正确方式
你代码中使用的get_the_author()本身是WordPress原生合法函数,作用是返回当前文章作者的显示名称,该函数必须在主循环(The Loop)内部才能正常取值,这是你目前无法获取作者信息的最常见原因。
如果要规避循环上下文的影响,更稳定的写法是使用get_the_author_meta()函数,指定要获取的作者字段和文章ID即可,不需要依赖全局循环状态,比如要获取作者显示名就写get_the_author_meta('display_name', get_the_ID())。
如果不需要对作者名做二次处理、直接输出的话,也可以用the_author(),这个函数会直接打印作者名,不需要加echo。
问题2:提取特色图像地址用作元素背景
完全可以实现,WordPress提供了专门的get_the_post_thumbnail_url()函数用来返回特色图像的源地址,不会输出完整的img标签,完全满足你提取地址做背景的需求。
这个函数支持两个参数:第一个是文章ID,在主循环内可以不传,默认取当前文章;第二个是图像尺寸规格,传'full'取原图,传'large'/'medium'/'thumbnail'对应后台媒体设置里的各尺寸缩略图,你可以根据实际布局需求选择。
注意你现有代码里的特色图写法是错误的:the_post_thumbnail()的作用是直接输出完整的<img>标签,不是返回图片地址,把它写在img的src属性里会导致HTML结构错乱。
修正后可直接使用的代码
<?php // 提前获取当前文章特色图地址,这里使用full原图尺寸,可按需替换为large/medium等 $featured_image = get_the_post_thumbnail_url(get_the_ID(), 'full'); ?> <!-- 将特色图作为内联背景图绑定到.blog-info节点 --> <div class="blog-info" style="background-image: url('<?php echo esc_url($featured_image); ?>');"> <div class="blog-date"><?php echo get_the_date(); ?></div> <div class="blog-title"><?php echo get_the_title(); ?></div> <div class="blog-author">written by <span class="blog-author-name"><?php echo get_the_author_meta('display_name', get_the_ID()); ?></span></div> <?php // 如果还需要单独在页面内展示特色图,保留下面这段即可,不要把the_post_thumbnail写在src属性里 /* <div class="blog-image"> <?php the_post_thumbnail('large'); ?> </div> */ ?> </div>
额外说明
- 代码里用
esc_url()对输出的图片地址做了安全转义,是WordPress开发的规范写法,能避免特殊字符导致的路径错误 - 作者部分用
get_the_author_meta()搭配文章ID取值,不受循环上下文影响,稳定性更高 - 用作背景图的时候记得给
.blog-info元素在CSS里设置合适的background-size、background-position属性,保证图片展示效果符合预期
内容的提问来源于stack exchange,提问作者DearBee
相关产品推荐
相关产品推荐

