WordPress自定义文章single页slug正确但固定链接始终返回首篇文章求助
问题根因
你在single.php中没有使用WordPress默认的主循环(该循环会自动根据当前访问URL的slug、ID参数匹配对应的目标文章),而是自行新建了WP_Query查询,该查询的条件固定为按倒序拉取1篇对应语言的自定义文章,完全不关联当前访问的文章信息,因此无论打开哪篇文章的固定链接,只会返回对应语言下最新的那篇文章内容。
修复方案
1. 替换single.php的查询逻辑
删除自定义的WP_Query代码,改用WordPress原生主循环即可,修改后的完整代码如下:
<?php $lang = substr(get_locale(), 0, 2) ?> <html lang="<? echo $lang ?>"> <?php get_header(); ?> <div class="section2"> </div> <?php // 原生主循环自动匹配当前URL对应的文章 if ( have_posts() ) : while ( have_posts() ) : the_post(); if ($lang == "en") : get_template_part( 'template-parts/content', 'single' ); elseif ($lang == "fr") : get_template_part( 'template-parts/content', 'single2' ); endif; if( comments_open() || get_comments_number() ): comments_template(); endif; endwhile; endif; ?> <?php get_footer(); ?>
2. 验证固定链接配置
进入WordPress后台→设置→固定链接,点击「保存更改」刷新重写规则,确保自定义文章类型的slug匹配逻辑正常生效。
可选规范优化
你可以为自定义文章类型单独创建单页模板,无需在通用single.php中做判断:
- 英文活动自定义文章类型为
eventEnglish,创建single-eventEnglish.php作为英文活动的专属单页模板 - 法语活动自定义文章类型为
evenementFrancais,创建single-evenementFrancais.php作为法语活动的专属单页模板
你的archive.php列表页逻辑无需修改,当前是正常可用的。
内容的提问来源于stack exchange,提问作者Aleks Uher
相关产品推荐
相关产品推荐

