私はif/elseif/elseステートメントを使用したいカスタム投稿タイプを持っています。投稿タイプの投稿数が1 do Xに等しい場合、そうでなければ投稿数が1 do Yより大きい、そうでなければZ。
これは私がこれまでに思いついたコードですが、私がカウント投稿タイプに追加すると、the_contentとthe_titleは通常のページを引き込み始めます。また、実際に投稿数も数えていないと確信しています。 if/elseif/elseを削除すると、whileループは完全に機能します。
PS。 whileループでコードを削除して、コードをより単純化しました。通常のコードはスライダーにとってはるかに複雑です。スライダーは1つのスライドでも動作するので、1つのポストしかない場合はスライダーを省略するための最初のifステートメントが必要です。
function getTestimonial() {
$args = array( 'post_type' => 'testimonial' );
$loop = new WP_Query( $args );
$count_posts = wp_count_posts( 'testimonial' );
if(count($count_posts) == 1) :?>
<?php the_content(); ?>
<?php the_title(); ?>
<?php elseif(count($count_posts) > 1) : ?>
<?php if ($loop->have_posts()) : while ($loop->have_posts()) : $loop->the_post(); ?>
<div id="slider">
<?php the_content(); ?>
<?php the_title(); ?>
</div>
<?php endwhile; endif; ?>
<?php else: ?>
<p>No listing found</p>
<?php endif;
}
WP_Query
はいくつかの便利なプロパティを提供します。あなたが使用できるそれらのうちの2つがあります:
$post_count
- 表示されている投稿の数(WP_Queryコンストラクトにposts_per_page
引数を渡さない場合、最大5つの投稿を返します)$found_posts
- 現在のクエリパラメータに一致すると判明した投稿の総数(データベースに100の投稿があり、それが引数に収まる場合、このプロパティは100を返します)これがコードのサンプルです。
$args = array( 'post_type' => 'testimonial' );
$loop = new WP_Query( $args );
$numposts = $loop->post_count;
if ($numposts == 1) {
// do X
} else if ($numposts > 1) {
// do Y
} else {
// do Z
}
Print_r($ loop)&print_r($ count_posts)だけで、出力が何であるかを確認できますか。