私はページテンプレートを作成しました、そして目標はカテゴリ名によってすべての投稿を取得するループを作成することです。カテゴリ名はページ名のスラッグから渡されます。これを完全に機能させることはできませんでした。
EDITこのループに対する私の関数は次のとおりです(回答から更新)。
global $post;
$page_slug = $post->post_name;
$category_query = new WP_Query(array(
'category_name' => $page_slug
));
if ($category_query->have_posts()) :
while ($category_query->have_posts()) :
$category_query->the_post();
$output = '<h2 class="entry-title" itemprop="headline"><a href="'.get_the_permalink().'">'.get_the_title().'</a></h2>';
$output .= '<div class="entry-content" itemprop="text">'.get_the_content().'</div>';
endwhile;
else :
$output = '<h3>No posts found under "'.$page_slug.'"</h3>';
endif;
wp_reset_postdata();
echo $output;
私が得るのは空白の白いページだけなので、私はどこかにめちゃくちゃになった。探しているものを実現するためにループを修正する方法について何か提案はありますか?
endwhile;
がありません。get_*
を使う必要があります。$page_slug
を、$post_slug
をそこで使用しています。ただ1つの同じ変数を使用してください。 ;)while
ループの条件を大括弧で囲みます。更新されたコードを参照してください。
global $post;
$page_slug = $post->post_name;
$args = array(
'category_name' => $page_slug
);
$category_query = new WP_Query($args);
if ($category_query->have_posts()) {
while ($category_query->have_posts()) {
$category_query->the_post();
?>
<h2 class="entry-title" itemprop="headline"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry-content" itemprop="text"><?php the_content(); ?></div>
<?php
}
} else {
?>
<h3>No posts found under "<?php echo $page_slug; ?>"</h3>
<?php
}
wp_reset_postdata();
私はあなたのコードにほとんど問題を見ないことができます。
主な原因は、Whileループが閉じていないため、else:
の前に閉じます。これはあなたが空白の画面を取得している理由です。あなたは将来の致命的なエラーのための空白の画面を避けるためにPHPのエラーをオンにする必要があります。
get_the_title()
の代わりにthe_title()
を使い、get_the_content()
の代わりにthe_content()
を使う