web-dev-qa-db-ja.com

条件付き演算子でカスタム投稿タイプを数える方法

私は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;
    }
1
Heather

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
}
3

Print_r($ loop)&print_r($ count_posts)だけで、出力が何であるかを確認できますか。

1
Annapurna