编者注:本题原题——《Wordpress Template Changes Based on Template Code》
我有一个从 url 读取变量(单个字母)的页面。然后该页面显示分配给该字母的自定义帖子(该字母是自定义字段)。
问题是分配给页面的模板没有做页面的最终渲染。
它包含以下代码:
<?php
$letter = $_GET['letter'];
/*If there is no value returned then the loop defaults to searching for items beginning with 'A'*/
if ( $letter=="" )
$letter = 'A';
/* The following <h1> needs to be outside of the loop */
?>
<h1>Glossary Items Listed Under Letter "<?php echo $letter ?>"</h1>
<?php
$loop = new WP_Query(
array(
'post_type' => 'glossary',
'meta_key'=> 'first-letter',
'meta_value' => $letter,
'posts_per_page' => 10 )
);
?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="glossarybody">
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
</div>
<?php endwhile; ?>
当该代码在页面上时,页面显示正确的结果(标题列表),但使用插件Reveal Templates我看到页面正在呈现page.php
。
正确的模板应该是glossary-terms.php
(我尝试使用文件名 terms.php 以防词汇表这个词,所涉及的自定义帖子类型的名称导致问题)。
如果我删除上面的代码并留下一个或多或少的静态页面,其中包含一些 html、页眉、页脚和侧边栏,那么页面将使用正确的模板呈现。
这表明 Wordpress 操作中的某些内容导致模板在初始模板的执行中发生变化。
对于我的设置可能有什么问题以及如何获取正确的模板来呈现页面,我将不胜感激。
更新:我发现如果我更改调用链接,我可以获得正确的模板来呈现页面。例如,如果调用链接以“.../terms?letter=A”结尾并且我将其更改为“..../terms?letter=A/”,那么页面将使用正确的模板呈现。
更新:关于之前的评论。如果我将字段的内容和调用链接更改为指定字母以外的内容,例如 xya,那么整个过程将正常工作。因此,与此自定义字段相关的某些内容似乎导致设计的模板被忽略。