macoblog

「ゲーム × プログラミング」で生きていく

アプリ検索ツール(β版)を公開

【WordPress】固定ページの本文だけ取得して使いたい【コピペOK】

WordPress

WEB制作担当者

WEB制作担当者
「TOPページに特定の固定ページの内容を表示させたい、参考記事は多いけどなんかしっくりこない、コピペで実装できて使い回すことも出来る完璧な解決策を提示してくれ!」

こんな要望に応える記事になります。

本記事では、WordPressで特定の固定ページの本文だけ取得する方法について解説しています。初心者でも簡単に実装できる方法で解説しているので是非参考にしてみてください。

「多機能かつ自由なサイトの実現」

この記事で得られるもの

固定ページの本文だけ取得する:3パターン用意

WordPressを使ってWEB制作をしていると、「このページに固定ページの内容(本文)を表示させたい」、なんて事がよくあります。

そんな時に使えるコードを用意しました、使い分けることができるように3パターン載せてありますので選んで使ってみてください。

たった2行で本文取得【コピペOK】

ただ本文を取得して表示させるだけなら下記のコードでOKです、取得したい場所(表示させたい場所)に下記のコードをコピペしましょう。

※1行目の「ここにスラッグ」の部分に、取得したい固定ページのスラッグを入力する(idだと使い回しづらい)

$page_data = get_page_by_path('ここにスラッグ'); $page = get_post($page_data);
$content = $page -> post_content;

// 本文を表示する
echo $content;
ポイント

固定ページの内容をテキストエディタでHTMLタグを使って作りこんでいる場合は上記がおすすめです、ビジュアルエディタを使っている場合、改行に伴う<p></p>などは取得しません、これも取得したい場合は自動整形を保持して取得【コピペOK】参照。

HTMLタグを除外して取得【コピペOK】

固定ページの本文を純粋にテキストだけ取得して使いたい場合、つまり、HTMLタグを除外して使いたい場合は下記のようにしましょう。

取得したい場所(表示させたい場所)に下記のコードをコピペしましょう。

※1行目の「ここにスラッグ」の部分に、取得したい固定ページのスラッグを入力する(idだと使い回しづらい)

$page_data = get_page_by_path('ここにスラッグ'); $page = get_post($page_data);
$content = $page -> post_content;

// HTMLタグを除外した上で本文を表示する
echo strip_tags($content);
ポイント

HTMLを取り除いてテキストだけを使いたい場合、取得した上で加工して使う際にはこっちが便利かと、この場合一定以上のプログラミングスキルが求められます。

自動整形を保持して取得【コピペOK】

最初に紹介したコードに自動整形を含むパターンです。

取得したい場所(表示させたい場所)に下記のコードをコピペしましょう。

※1行目の「ここにスラッグ」の部分に、取得したい固定ページのスラッグを入力する(idだと使い回しづらい)

$page_data = get_page_by_path('ここにスラッグ'); $page = get_post($page_data);
$content = $page -> post_content;

// 本文を表示する(自動整形含む)
echo apply_filters('the_content', $content);
ポイント

テキストエディタは苦手だから使わない、内容はビジュアルエディタで作りました、そんな時におすすめです。

おまけ:固定ページのカスタムフィールド化

おまけ:固定ページのカスタムフィールド化

最後に、今回解説した「本文の取得」を応用した、固定ページをカスタムフィールド化する方法を載せて終わりたいと思います、これは下記のような時に使えます。

この部分を管理画面から変更できるようにしたいと言われた、テキストには規則性がありそうだ、あまり時間をかけず簡単に実装してみたい。

実際に見てみないとイメージしづらいですよね、サンプルを置いておきますのでピンと来た方は参考にしてください。

カスタムフィールド化の手順

  • カスタムフィールドとして使う固定ページの用意
  • テキストをカンマ区切りで構成する(ここでは1行に2つ)
  • 固定ページの内容(本文)を取得し加工して表示させる

下記のテキスト部分をCMS化させます(完成イメージ)

テキスト部分をCMS化させる(完成イメージ)

テキストをカンマ区切りで構成する(ここでは1行に2つ)

テキストをカンマ区切りで構成する(ここでは1行に2つ)

固定ページ本文に、1行2項目で用意し","で区切ります、これがカスタムフィールドの役割を担います。

スラッグも忘れず設定しておきましょう。

固定ページの内容(本文)を取得し加工して表示させる

最後に本文を取得し加工した上で表示させれば完了です、下記になります。

$page_data = get_page_by_path('sample'); $page = get_post($page_data);
$content = $page -> post_content;

$parts = array_filter(explode("\r\n", $content), "strlen");

foreach ($parts as $key => $value) {
  $item = explode(",", $value);
  echo 'Q. '.$item[0].'<br>';
  echo 'A. '.$item[1].'<br>';
}

以上になります。

この方法であれば、","で区切るだけで分けられます(増やす時も簡単)、項目(行)を追加する際には改行するだけなので分かりやすいかと。

何より簡単に実装できるので便利かと思います、参考にしてみてください。

以上になります。