サポート » 使い方全般 » 固定ページにカスタムポストの特定記事を読み込むには

  • 解決済 daigo

    (@studio_pastel)


    以下の通常ループを含んだページテンプレートを固定ページに適用して、

    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <?php the_content(); ?>
    <?php endwhile; endif; ?>

    その固定ページの本文部にカスタムポストの特定の記事を読み込みたいのですが、
    うまくいかず困っています。本当は「single-カスタム投稿名.php」で普通に個別表示したいのですが、
    URLの都合とサイト内容の管理上、どうしても個別表示だけを固定ページ上にする必要があります。
    更に表示させたい個別の記事は数十あるので、できれば、なるべくシンプルに対応したいのですが、うまくいきません。

    例えば、上記固定ページの入力画面上で、本文部に投稿ID指定で記事とその記事が含む
    カスタムフィールドを読み込めたら、それで事足りるのですが・・・。

    ちなみに、プラグイン「Exec-PHP」を使用しており、PHPが投稿時の本文部で使用出来る状況です。

    WordPressの仕組みにそぐわないといいますか、本当におかしなことをしたいのですが、
    どなたかお分かりになる方、お知恵を貸してください。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 固定ページに表示したい投稿のIDをカスタムフィールドに保存しておき、テンプレートファイルにカスタムフィールドからIDを取得、その後でget_post()でカスタム投稿タイプの投稿を取得・表示する処理を記述してはいかがでしょうか?
     
    表示したい投稿が一つの場合はget_post()を、複数の投稿を表示したい場合はget_posts()が使えそうです。
    get_posts()はinclude、excludeで、それぞれ取得したい投稿のID、除外したい投稿のIDによる指定が可能です。
    どちらもカスタムフィールドまでは取得できませんので、別に取得する必要があります。
     
    関数リファレンス/get_post – Codex 日本語版
    テンプレートタグ/get_posts – Codex 日本語版
     
     
    表示したい投稿のID取得には、特定のキーのカスタムフィールドを取得できるget_post_meta()を、各投稿のカスタムフィールドをすべて取得するにはget_post_custom()を使用してみてください。
     
    関数リファレンス/get_post_meta – Codex 日本語版

    関数リファレンス/get_post_custom – Codex 日本語版

    トピック投稿者 daigo

    (@studio_pastel)

    popup様

    ありがとうございます!
    大変勉強になりました。ややこしく考えておりましたが、
    シンプルに一気に解決いたしました。
    本当に助かりました。。

    固定ページにカスタムフィールド「投稿ID」を持たせて、表示させたい投稿のIDを入力。
    その固定ページに適用させるページテンプレートに、以下の記述をして、特定投稿の
    タイトルやカスタムフィールド値(下記の場合だと「ソフトウェア」)を読み込めました。

    <?php
    $my_id = get_post_meta($post->ID, '投稿ID', true);
    $post_id = get_post ( $my_id );
    echo $post_id->post_title;
    echo get_post_meta($my_id, 'ソフトウェア', true);
    ?>

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「固定ページにカスタムポストの特定記事を読み込むには」には新たに返信することはできません。