【WordPress】固定ページに特定のカテゴリーのみを表示する方法


WordPress Pencil and Pins-06

お客さんの要望でWordPressの固定ページに特定のカテゴリーのみを表示する必要がありましたので、備忘録としてシェアします。
はじめに断っておきますが、僕はプログラマーでもエンジニアでもないので、間違ったことを書いてしまうかもしれませんので、もし間違っていたらご指摘お願いします>詳しい方

サイトの構成は概ねこのようになっておりました。

  • ホーム
  • アバウト
  • 実績
  • お問い合せ
  • 大人の事情でかなりボカして書いております(^_^;)

    で、この「実績」というページに、「result」というカテゴリーの記事のみを表示したいというケースです。
    表示させるのは、日付と記事タイトルのみ。
    もちろん手動でコピペするのではなく、自動的に反映させたいのです。

    結論から簡単に書きますと、

    ○このページだけに適用されるページテンプレートを作成する

    というのがよろしいかと。
    他にもいろいろと方法はありますが、シンプルにやるならこの方法がいいと私は思います。

    やり方

    こちらの記事を参考にさせていただきました。
    固定ページのテンプレート-page.php | WordPress の部屋

    使っているテーマの「page.php」ファイルを複製して、該当するページのIDもしくはスラッグをファイル名に含ませた名称にします。
    例えば、「page.php」→「page-result.php」など。

    そして、上記記事にあるようにコード内の不要な部分を削除します。

    次にこちらの記事を参考にして、特定カテゴリーのみを抽出してループさせます。
    WordPress › フォーラム » 固定ページに特定のカテゴリーに投稿した記事を載せたい
    テンプレートタグ/get posts – WordPress Codex 日本語版

    1
    <?php the_content(); ?>

    のあとに続けて、以下のコードを記述します。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
        $posts = get_posts('numberposts=5&category_name=result');
        global $post;
        if($posts): foreach($posts as $post): setup_postdata($post);
    ?>
    <p>
    <h3><?php the_time('Y年n月j日'); ?></h3><br />
    <ul><strong><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></strong></ul>
    </p>
    <?php the_content(); ?>
    <?php endforeach; endif; ?>

    パラメータ
    2行目:$numberposts
    (整数) (オプション) 取得する投稿の数。
       0 にするとto use the max number of posts per page の最大値。-1 にすると制限無。
       ここでは制限無しの-1を記述。
    2行目:$category_name
    (文字列) (オプション) 指定したカテゴリー名またはカテゴリースラッグの投稿のみを返す。
       ここではカテゴリー名である「result」を記述。

    保存してサーバにアップして確認します。
    「実績」ページを開いて、先ほど作成した「page-result.php」が適用されていればOKです。

    その他のやり方

    上記以外の方法ももちろんあります。
    ◎記事本文内でPHPを実行できるプラグインを導入し、PHPコードを埋め込む
    →▼Exec-PHP | 投稿記事内等で PHP を実行させるWordPressプラグイン
    →▼WordPress の固定ページに特定カテゴリのタイトル一覧を表示出来るようにカスタマイズする方法 | Smartphone-Zine

    ◎function.phpを編集する
    →▼wordpress固定ページに新着投稿を一覧表示する方法: Webディレクター日記
    →▼ふじこのプログラミング奮闘記

    僕の場合はfunction.phpを編集する方法で別の問題が発生してしまったため、断念しました。

    お客さん側でページを編集することなく、記事を書くごとにカテゴリーさえ設定しておけば、自動的にページに反映されるので、喜ばれる仕様です(笑)

     
    Copy the code below to your web site.
    x 

    Powered by

    投稿者:

    gladdesign

    gladdesign

    @gladdesign フリーランスのデザイナー。横浜在住。広告(DTP・WEB)デザインおよび企画提案・ネーミング・マーケティング。 WordPress構築も承り中。Apple,Mac狂信者。Illustrator、Photoshop、iPhone6Plus、AppleWatch愛用中。

    コメント