サポート » 使い方全般 » 検索結果ページににて、投稿、固定、カスタム投稿をそれぞれ違う内容で表示

  • 解決済 emitokyojp

    (@emitokyojp)


    検索結果ページsearch.phpにて、固定、投稿などと、一部のカスタム投稿の表記を分けたいのですが、
    現状だと、カスタム投稿の場合にしか表示がされません。固定、投稿ページの場合の条件付けはis_page()、is_single()ではないんでしょうか?
    ヒントを頂けると嬉しいです。
    よろしくお願いいたします。

    <?php if ( is_page() || is_single() || get_post_type() == 'news' || get_post_type() == 'product' ) : ?>
    内容A
    <?php elseif(( get_post_type() == 'factory')): ?>
    内容B
    <?php endif; ?>
10件の返信を表示中 - 1 - 10件目 (全10件中)
  • is_singular()でポストタイプを指定してみてください。
    関数リファレンス/is singular

    トピック投稿者 emitokyojp

    (@emitokyojp)

    通常投稿で表示させたかったので、postを入れたのですが、やはり表示がされません。
    カスタム投稿の場合は、表示がされます。

    	<?php if ( is_singular('post') || get_post_type() == 'news' || get_post_type() == 'product' ) : ?>
    	内容A
    	<?php elseif(( get_post_type() == 'factory')): ?>
    	内容B
    	<?php endif; ?>
    	

    いや、get_post_type()ではなくis_singular()でという意味です。

    どうかな?

    <?php if ( is_single() || is_page() || is_singular('news') || is_singular('product') : ?>
    内容A
    <?php elseif( is_singular('factory'): ?>
    内容B
    <?php endif; ?>

    ループ内で使っているのですよね?
    echo get_post_type(); で通常投稿の場合ちゃんとpostが表示されますか?
    get_post_type() == “post” で希望の動作はすると思います。

    トピック投稿者 emitokyojp

    (@emitokyojp)

    ループ内で使用しています。

    <?php if ( get_post_type() == ‘post’ || get_post_type() == ‘news’ || get_post_type() == ‘product’ ) : ?>
    とやっても、表示がされませんでしたので、
    <?php if ( get_post_type( $post ) || get_post_type() == ‘news’ || get_post_type() == ‘product’ ) : ?>
    と表記したら、表示がされました。

    phpに関してあまり詳しくないんですが、この両者の違いについて教えていただけると嬉しいです。

    トピック投稿者 emitokyojp

    (@emitokyojp)

    すみません。上記間違えです。

    <?php if ( get_post_type() == “post”  
    内容A
    <?php elseif( is_singular('factory'): ?>
    内容B
    <?php endif; ?>

    と表記すると、Bだけ出てきます。

    <?php if ( get_post_type( $post ) 
    内容A
    <?php elseif( is_singular('factory'): ?>
    内容B
    <?php endif; ?>

    と表記するとAだけ出てきます。

    両方出すにはどうしたらいいのでしょうか?

    トピック投稿者 emitokyojp

    (@emitokyojp)

    <?php if( is_singular('factory'): ?>
    内容A
    <?php elseif ( get_post_type() == “post” :?>
    内容B
    <?php endif; ?>

    と条件を入れ替えたらきちんと表示がされました。

    CG

    (@du-bist-der-lenz)

    phpに関してあまり詳しくないんですが、この両者の違いについて

    考え方として、受け取る「紙コップ」が用意しないと、抽出したコーヒーはどうなるでしょう。ということでどうでしょうかね。

    トピック投稿者 emitokyojp

    (@emitokyojp)

    ありがとうございます!

    is_singularはクエリーからシングルページかどうか調べるのでループ中
    反映されないんじゃないかなと思います。

    後get_post_type( $post ) という書き方の場合はループ中の場合は現在の投稿の
    投稿タイプを返す形になるので、投稿タイプがある投稿はすべてTrueになるので
    全部内容Aが出てきたのだと思います。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「検索結果ページににて、投稿、固定、カスタム投稿をそれぞれ違う内容で表示」には新たに返信することはできません。