サポート » 使い方全般 » 固定ページ内に、ブログの最新記事の日付とタイトルを表示させたい。

  • 解決済 modaka

    (@modaka)


    はじめて質問するので、失礼があったらすみません。もう何時間も格闘していて、お手上げ状態なので、どなたか助けてください。

    WordPressでひとつのサイトを丸ごと作っているのですが、クライアントから全てのページを管理画面で後から修正できるようにして欲しいと言われ、各ページを固定ページで作成しました。

    ほとんど完成しているのですが、ひとつだけ解決しないことがあります。固定ページで作ったページの中に、同じサイト内に設置しているブログの最新記事の日付とタイトル(1件だけ)を取得するようにしたいのですが、どうやっても出来ません。

    試してみたことは、

    投稿画面にPHPを挿入できるプラグインを入れてみた→動作せず
    functions.phpでショートコードを作ってみた→動作せず&どう書いていいか分からず

    です。もうたくさん検索して、あらゆる手を尽くしましたが、できないんです。
    クリスマスの朝からずっとこれに悩んでいて…。どなたかアドバイスをお願いします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • モデレーター Okamoto Hidetaka

    (@hideokamoto)

    WP_Queryを使って記事データを取得して表示させる形になるかなと思います。

    WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット」というページがありますので、
    そこを参考にしてみてください。

    取得処理を書く場所ですが、page.phpに記述するやり方では要望に対応できないのでしょうか?

    固定ページで作ったページの中に、同じサイト内に設置しているブログの最新記事の日付とタイトル(1件だけ)を取得するようにしたい…

    これは、特定のページだけですか、それとも全てのページに共通ですか?

    トピック投稿者 modaka

    (@modaka)

    仮眠を取っていて、返信が遅れてすみません。

    >hideokamotoさん

    WP_Queryについて教えてくださり、ありがとうございます。まだPHP初心者なのですが、ページを読んで勉強してみます。

    page.phpに記述するやり方は?という件は、固定ページ全部ではなく、ひとつの固定ページだけに適用したいので、投稿画面にphpを入れる方法を探していました。

    いま、考えて考えて思いついたのですが、適用したい固定ページはフロントページになるので、page.phpに書いて、その部分をフロントページにだけ表示させるようにしたらいいのかな…。試してみます。

    >kjmtshさん

    いくつか固定ページがあり、その中の特定の固定ページに適用させたいのです。
    固定ページごとに少しデザインが違います。

    特定の固定ページということでしたら、ショートコードがおすすめです

    トピック投稿者 modaka

    (@modaka)

    >sisbirdさん

    回答ありがとうございます。
    ショートコードは何度か試したのですが、上手く動作しませんでした。

    functions.phpに書くコードを教えて頂けないでしょうか?

    いろんな方の意見があっておもしろいことになってますね()
    まぁ基本的にショートコードの方向性ですしそれが適していると思いますが。

    ショートコードは何度か試したのですが、上手く動作しませんでした。

    トピックの最初にも書かれていましたがどのようなコードを試したのですか?(もちろん難しい話ではないので紹介するのは簡単ですが)試したものがあるのであればそれを貼ってみるのもいいかもしれません。

    クライアントが編集する場所にショートコードを置くのはあんまりお勧めではありません。間違えて消しちゃった、助けて、という連絡が入るのは、modaka さんのところだと思うので。

    だから、ショートコードではなくて、テンプレートに書く方法ということで。固定ページごとにデザインが違うということは、テンプレートを別にしているのだと思いますが、その場合は、if 判定を外してください。マークアップはお好きなようにどうぞ。

    if (is_page($page_id) {
        $latest_post = wp_get_recent_posts('numberposts=1');
        $post_date = mysql2date(get_option('date_format'), $latest_post[0]['post_date']);
        echo '<a href="' . get_permalink($latest_post[0]['ID']) . '">' . $latest_post[0]['post_title'] . '</a>';
        echo $post_date;
    }

    どうしても、ショートコードにしたいという場合は、表示したい文字列を作って return すれば終了です。echo しちゃいけませんので、ご注意を。固定ページの編集画面で、

    [never_remove_me]

    と入力します。

    function display_latest_post_with_date($atts) {
        $latest_post = wp_get_recent_posts('numberposts=1');
        $post_date = mysql2date(get_option('date_format'), $latest_post[0]['post_date']);
        $string_to_display = '<a href="' . get_permalink($latest_post[0]['ID']) . '">' . $latest_post[0]['post_title'] . '</a>' . $post_date;
        return $string_to_display;
    }
    add_shortcode('never_remove_me', 'display_latest_post_with_date');
    トピック投稿者 modaka

    (@modaka)

    風邪でダウンしてしまって返信が遅れました。申し訳ありません!

    >Hinaloeさん

    そうですね。今後はちゃんとコードを貼るようにします。質問初心者で申し訳ありません。

    >kjmtshさん

    具体的なコードを教えて頂きまして、ありがとうございます!
    これで思っている形に表示されるようになりました。確かに、クライアントがさわるコードの中に、ショートコードは適さないかもしれませんね。勉強になりました。

    みなさま、ありがとうございました!

    トピック投稿者 modaka

    (@modaka)

    解決しました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「固定ページ内に、ブログの最新記事の日付とタイトルを表示させたい。」には新たに返信することはできません。