You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义分类法下所有文章描述重复问题求助

问题分析与修复方案

首先,你遇到的描述重复问题,根源在于**get_the_content()函数的参数使用错误**。

get_the_content()的函数签名是:

get_the_content( string $more_link_text = null, bool $strip_teaser = false, WP_Post|int|null $post = null )

你现在写的get_the_content($id)是把文章ID传给了第一个参数$more_link_text(更多链接文本),而不是指定要获取内容的文章。这就导致函数始终使用当前全局的$post对象内容,所以所有文章的描述都重复了。


修复方法

你有两种可靠的修复方式:

方式1:正确使用get_the_content()的第三个参数

把代码中获取内容的部分改成:

<p><?php echo get_the_content('', false, $id); ?></p>

这里前两个参数用默认值(空字符串和false),第三个参数传入文章ID,明确指定要获取哪篇文章的内容。

方式2:使用get_post_field()配合内容过滤器

如果你想更直接地获取文章内容并应用WordPress的内容过滤器(比如短代码解析、格式转换等),可以用:

<p><?php echo apply_filters('the_content', get_post_field('post_content', $id)); ?></p>

get_post_field('post_content', $id)直接从数据库获取原始内容,apply_filters('the_content', ...)则会处理成和前台显示一致的格式化内容。


额外优化建议

另外,你的循环方式是直接遍历文章ID,建议可以结合setup_postdata()来让模板函数更规范(虽然不是必须,但能避免一些潜在问题),比如把循环改成:

if ($query->have_posts()): $i=1; while($query->have_posts()) : $query->the_post();
$id = get_the_ID();
?>
<!-- 你的HTML结构 -->
<?php $i++; endwhile; wp_reset_postdata(); endif; ?>

这样使用the_post()后,全局$post对象会被正确设置,后续使用get_the_title()、get_the_content()等函数时可以不用传ID,代码更简洁。


内容的提问来源于stack exchange,提问作者Hasnain Ghias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:42:43