• 解決済 gblinngy

    (@gblinngy)


    固定ページに、関連する投稿の記事を3つ出力させるようにしたいです。
    固定ページが増える可能性があるため、ページのスラッグ名=投稿のカテゴリ名に設定して、
    該当する記事を出力したいと考えています。

    <例>
    固定ページのページ名がfacialの場合、
    facialというスラッグ名のカテゴリに該当する投稿を出力

    固定ページ——————-
    ・フェイシャル(■)
    ・痩身
    ・メンズ

    投稿——————-
    ・Before/After(カテゴリ)
     ├フェイシャル(カテゴリ)
      ・Aさん(★)(投稿記事)
      ・Bさん(★)(投稿記事)
     ├痩身(カテゴリ)

    この(★)のAさん、Bさんの記事を、固定ページの「フェイシャル(■)」に表示したいです。

    <?php
    //固定ページスラッグ取得
    $pageName = attribute_escape( $post->post_name );
    //スラッグ名をカテゴリ名として代入
    $posts = get_posts('numberposts=3&category=★ページ名★');
    global $post; ?>
    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endforeach; endif; ?>
    </ul>

    ★ページ名★ のところに、$pageNameをそのまま入れてみてもダメで
    当方、PHP素人なので、途方にくれております。

    もし他に良い方法があればご教授いただけましたら幸いです。
    よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • category だとカテゴリの ID を指定する必要があるので、category_name だとどうでしょうか?

    トピック投稿者 gblinngy

    (@gblinngy)

    >Tsuyoshiさま

    ありがとうございます!
    ▼下記のようにしてみたのですが、何も出力されませんでした。
    $posts = get_posts(‘numberposts=3&category_name=$pageName’);

    ちなみに(当たり前かもですが)、ページ名(test2)を直接入力すれば該当するものが出力されました。
    $posts = get_posts(‘numberposts=3&category_name=test2’);

    よろしくお願いします

    $post->post_name が取得できてないのではないでしょうか?

    // 現在表示している投稿ページの投稿IDから投稿情報を取得します
    $post = get_post( get_the_ID() );
    
    // 投稿のスラッグを取得します
    $slug = $post->post_name;

    $pageName や $post の値を確認するなどして、一つ一つ潰していくといいですよ。

    // 値表示
    var_dump($pageName);
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    トピック投稿者 gblinngy

    (@gblinngy)

    ありがとうございます!
    固定ページ名は正しく出力できているっぽいです。

    ▼下記、page.phpに書いています。

    
    //固定ページ名を出力
    <?php 
    $pageName = attribute_escape( $post->post_name ); 
    echo $pageName
    ?>

    →test2(固定ページ名)が出力されます。

    教えていただいたものを入れてみました。

    <?php
    // 現在表示している投稿ページの投稿IDから投稿情報を取得します
    $post = get_post(get_the_ID());
    // 投稿のスラッグを取得します
    $slug = $post->post_name;
    // 値表示
    var_dump($slug);
    $posts = get_posts('numberposts=3&category_name=$slug');
    global $post; ?>
    <ul>
    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endforeach; endif; ?>
    </ul>

    →string(5) “test2″ が出力され、投稿記事は出力されませんでした><

    こんにちは

    シングルクォーテーションなので変数展開できていません。
    ダブルクォーテーションに変更してみてください。

    $posts = get_posts( "numberposts=3&category_name=$slug" );

    あ、本当ですね。
    気が付かなかった!

    あるいは連結するとか、配列($args)で指定するとかですね。
    $posts = get_posts('numberposts=3&category_name=' . $slug);

    個人的には長くなるなら配列指定が好きです。

    $args = array(
    	'numberposts' => 3,
    	'category_name' => $slug,
    );
    $posts = get_posts($args);
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    • この返信は7年、 11ヶ月前にTsuyoshi.が編集しました。
    トピック投稿者 gblinngy

    (@gblinngy)

    ishitakaさま、Tsuyoshiさま

    ありがとうございます!できました!!!!
    連結は私にはレベル高すぎるのですが、せっかく教えていただいたので、こちらも試してみます!
    本当にありがとうございました!!

    ▼ちなみに、下記のようにしました。

    <?php
    $post = get_post(get_the_ID());
    $slug = $post->post_name;
    $posts = get_posts("numberposts=3&category_name=$slug");
    global $post; ?>
    <ul>
    <?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
    <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endforeach; endif; ?>
    </ul>

    本当に助かりました!ありがとうございました。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「固定ページのスラッグを取得して、カテゴリのスラッグとして使用するには?」には新たに返信することはできません。