私は自分のサイト上の複数のページに適用しているPHPテンプレートを持っているので、それらはページと同じ名前のカテゴリ内のすべての投稿のリストを表示します。ただし、1つのカテゴリからの投稿(「イベント」)がページにまったく表示されず、別のカテゴリからの投稿(「結果」)が1つだけページに表示されるため、正しく機能しません。それぞれに投稿。
カテゴリ名とページ名が同じであることを確認しました(投稿にそのカテゴリが1つしかない場合でも終わります)ので、それは問題ではありません。それでもコードを読み進めても、明らかなエラーは見られません。
私は自分のテンプレートファイルで次のコードを使って作業しています。
<?php /*
Template Name: List-all-posts-in-category
*/ ?>
<?php get_header(); ?>
<div id="main">
<?php get_sidebar(); ?>
<div id="content">
<div id="content-post">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div id="content-post-title">
<h1><?php the_title(); ?></h1>
</div>
<?php the_content(); ?>
<?php endwhile; else: endif; ?>
<?php $the_query = new WP_Query( array( 'category_name' => sanitize_title( get_the_title() ) ) ); ?>
<?php $yearNumber = 'YEARNOTSET'; ?>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php if ($yearNumber != get_the_date($d = 'Y')): ?>
<?php $yearNumber = get_the_date($d = 'Y'); ?>
<div id="content-category-post-date">
<h1><?php the_date($d = 'Y'); ?></h1>
</div>
<?php endif; ?>
<div id="content-category-post-title">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
</div>
<?php endwhile; else: endif; ?>
</div>
</div>
</div>
<div id="delimiter">
</div>
<?php get_footer(); ?>
何が問題の原因と考えられますか?
前もって感謝します。
最初に、カテゴリがページとまったく同じ名前であることを確認します(slugとall)。次に、WP_Query
に渡しているパラメータが正しくありません。
category_name
はスラグを期待します 。たとえば、Page 1
にはpage-1
のスラッグがあります。get_the_title()
は現在のページのタイトルを取得します - そのため、スラッグPage 1
を期待するパラメータにpage-1
を渡します。あなたができることはsanitize_title( get_the_title() )
であるか、できればあなたはあなたのドキュメントのトップでglobal $post
を宣言し、代わりに$post->post_name
を渡すことができます。