WordPressの「投稿本文の文字列」を自動で置換する方法

WordPressの「投稿やページ本文」のテキストを自由に書き換えるには?

この記事では「WordPressの投稿や固定ページの本文のテキスト内容を自由に置換・変換する方法」について解説します。

本文テキストの書き換え(変換・置換)だけではなく、いかなる変更を加えることが出来ます。

  • 本文の内容をまとめて置換・変換
  • 本文の内容を削除する
  • 本文の前後にバナーを差し込む
  • 本文の内容を新しいものに差し替える

などなどなんでもできます。

また、書き換え対象も一部のページだけや全ページなど自由に設定できます。

初心者の方にもわかりやすいように丁寧にフォロー入れながら説明しますのでぜひ最後までお付き合いください。

この記事を監修・執筆した専門家

こんにちは!この記事を監修・執筆した斎藤はじめと申します。
私は現役のエンジニアで、普段はWordPressの開発案件などをメインに担当しています。経歴としては誰もが知っている月間数千万人が利用するサービスの開発をしたり、今でも月間数百万人が訪問する規模のWordPressサイトの運営しております。WordPressを触らない日はありません。

そんな私がプロの目で解説していきます!

「投稿やページ本文」のテキスト書き換えの実装手順

「投稿やページ本文」のテキスト書き換え(置換や変換)の実装にはfunctions.phpに以下のPHPプログラムのコードを記述します。

functions.phpのサンプルソースコード

PHPサンプルプログラムのソースコードを示します。

以下の例ではHTML内の「XXXXX」という文字列を「YYYYY」に変換しています。
その部分を書き換えれば好きな書き換え処理ができてしまいます。

※一部変換ではなく全置き換え処理ですら可能です。

	//=====================================================================================================
	// 記事の投稿文字列に対して、変更を加えるスクリプト
	//=====================================================================================================
		
	if(is_admin() === false){ //★★★ 管理画面じゃない時だけ実行 ★★★
		
		add_filter('the_content', function ($content) {

			//★★★↓↓↓この$contentが出力される投稿HTMLになるので好きに修正↓↓↓★★★

			$content = str_replace('XXXXX','YYYYY',$content); //HTML出力で置き換える処理

			//★★★↓↓↓この$contentが出力される投稿HTMLになるので好きに修正↓↓↓★★★

		  return $content;
		}, 10000); //第2引数は優先順位(デフォルト10, 大きいほど後にまわされる)

	}

ソースコードの解説

できるだけソース中にコメントを書いてわかりやすくしたつもりですが簡単に補足しておきます。

このソースのポイントは2つ。

  • ・フィルタフック
  • ・実行するページの絞り込み条件
・フィルタフック
add_filter('the_content', function ($content) {}, 10000);

フィルタフックはWordPressの文字列の内容を変更できるオリジナルの処理が挿入できる機能です。

WordPressには様々な種類のフィルタフックが存在しますが、the_contentを指定することで本文出力前に処理をさしこめるフックが使えます。

・実行するページの絞り込み条件
if(is_admin() === false){ →管理者ページでないときだけ実行

何も条件を指定しないと全ページに処理されてしまうので、実行するページの絞り込みが必要です。

大抵の場合は管理者ページの場合はいらないと思うので、サンプルではこの条件で記述されています。

他にも条件の絞り方はあると思うので参考にしてください。

その他の条件の絞り込み

絞り込み条件をいろいろと使いたい場合は以下の判定用の関数を参考にしてみてください。自由度が無限に広がります。

関数名 説明 引数 返り値
is_single() 投稿・添付・カスタム投稿タイプの個別ページかどうか mixed $post →投稿のIDやスラッグ、またはその配列 bool
is_page() 固定ページかどうか mixed $page →ページのIDやスラッグ、またはその配列 bool
is_attachment() 添付ページかどうか mixed $attachment →添付ファイルのIDやスラッグ、またはその配列 bool
is_singular() is_single()・is_page()・is_attachment()のどれかかどうか mixed $post_types →カスタム投稿タイプ、またはその配列 bool
is_archive() アーカイブページであるかどうか
アーカイブとは投稿の一覧ページのこと。
(カテゴリ、タグ、作成者、日付、カスタム投稿タイプ、およびカスタム分類など)
なし bool
is_category() カテゴリーのアーカイブページかどうか
引数にカテゴリーIDやカテゴリースラッグを指定できる
配列で複数の指定も可能
mixed $category →カテゴリID、名前、スラッグ、またはその配列 bool
is_tag() タグのアーカイブページかどうか mixed $tag →カテゴリID、名前、スラッグ、またはその配列 bool
is_admin() 管理画面を表示中かどうか bool
is_author() 投稿者別のアーカイブページであるとき
引数に投稿者IDや投稿者のニックネームを指定できる
配列で複数の指定も可能
$author →ユーザーID、ニックネーム、nicename、またはその配列 bool
is_date() 日付のアーカイブページかどうか bool
is_year() 年別のアーカイブページかどうか bool
is_month() 月別のアーカイブページかどうか bool
is_day() 日別のアーカイブページかどうか bool
is_search() 検索結果ページかどうか bool
is_404() 404ページかどうか bool
is_paged() 複数ページ構成の2ページ目以降かどうか bool
is_home() || is_front_page() トップページかどうか bool
get_the_ID() 投稿のIDを取得 int
get_permalink($id) パーマリンクを取得 $id 投稿のID string

引数の使い方としては、is_single()だと投稿全体ならtrue, is_single(123)だと投稿IDが123のページの時だけtrueといった具合になります。

functions.phpの使い方についてよくわからない方のために解説します。

functions.phpの編集方法

functions.phpはWordPressの機能追加をするためのPHPファイルです。

(※実ファイルは/wp-content/themes/<テーマ名>/の直下にあります)

functions.phpを修正する場合は必ず親テーマではなく子テーマのfunctons.phpを修正してください。

※その理由や親テーマと子テーマについてはこちら↓の記事を参考に。

管理画面からfunctions.phpを参照・編集するには以下のように「外観>テーマ(ファイル)エディター」にアクセスしてテキスト編集をします。

また、直接functions.phpを編集するよりもこちらのプラグインで編集した方が便利なので参考にしてみてください。

まとめ

いかがでしたでしょうか。

最後に今回の内容に特に関連が深い別の記事をご紹介します。
全てチェックすると理解がとっても深まりますよ。

投稿やページの本文の内容だけでなくHTML全体を置換できる例になります。

本記事と同様にフィルタフックでthe_contentを利用している例です。

最後までお読みいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です