編集者注:この質問の元のタイトル-「テンプレートコードに基づくWordpressテンプレートの変更」
URLから変数(1文字)を読み取るページがあります。次に、そのレターに割り当てられたカスタム投稿がページに表示されます(レターはカスタムフィールドです)。
問題は、ページに割り当てられたテンプレートがページの最終レンダリングを行っていないことです。
次のコードが含まれています。
<?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に変更すると、プロセス全体が正しく機能します。したがって、このカスタムフィールドに関連付けられている何かが原因で、設計されたテンプレートが無視されているように見えます。