WordPressの投稿タイトルや本文の文字列を自動で置換する方法
WordPressの投稿や固定ページのタイトルや本文内容等の文字列を置換・変換
この記事では「WordPress投稿や固定ページのタイトルや本文内容等の文字列を置換・変換する方法」について説明します。
- 記事中のあるテキストを自動で変換したい
- タイトルの前にアイコンをつけたい!
- 複数の記事の画像を一気に差し替えたい!
- 複数の記事の内容を自動的に変換したい!
- 決められた場所にバナーなどを差し込みたい!
などなど、使い道はいろいろありそうです。
この記事を監修・執筆した専門家
こんにちは!私は現役のエンジニアで、普段はWordPressの開発案件などをメインに担当しております。誰もが知っている月間数千万人が利用するサービスの開発をしたり、月間数百万人が訪問する規模のWordPressサイトの運営しております。WordPressを触らない日はありません。
そんな私がプロの目で解説していきます!
サイトの内容を出力前に文字列の置換・変換をするサンプル
例としてまずは「投稿や固定ページでタイトルを書き換える」サンプルを紹介します。
投稿記事や固定ページのタイトルを置換するイメージ
こちらが変換前の投稿タイトル
こちらが変換後の投稿タイトル
タイトル文字列の置換・変換をするサンプルソースコード
それでは内容を出力まえに置き換えるサンプルソースコードを紹介します。
/*************************************************************
* 各種テキストを変換
************************************************************/
add_filter('the_title', function ($text){
if(
is_single() //投稿ページのみ
&& !is_admin() //管理画面は出さない
&& $text != null //テキストが空でない
){
$text = str_replace('{変換される前}','【テキストが変換された!!】',$text);
}
return $text;
}, 12);
上の例ではadd_filterというWordPres関数を使ってタイトル出力前に文字列変換処理を差し込んでいます。
こちらのソースコードはfunctions.phpという場所に記述します。
functions.phpについてよくわからない方は以下を参照してください。
functions.phpの場所、編集方法
functions.phpはWordPressの機能追加をするためのPHPファイルです。
functions.phpの場所は
「外観>テーマエディター」から
試用しているテーマ名を選んで、funcstions.phpを選びます。
また、直接functions.phpを編集するよりもこちらのプラグインで編集した方が便利なので参考にしてみてください。
様々な場所の文字列を変換する
サンプルはタイトルだけでしたが、the_titleの部分(フィルターフック名)を変更することで様々な場所のテキストを変換することができます。
フィルター名 | 説明 |
---|---|
the_title | 記事のタイトル |
the_content | 記事の内容 |
widget_title | ウィジェットのタイトル |
widget_text | ウィジェットのテキスト |
the_excerpt | 抜粋のテキスト |
comment_text | コメントのテキスト |
以上では主なものを取り上げましたが、WordPressにはその他さまざまなフィルターフックが存在します。
その他の条件の絞り込み
サンプルで使った条件以外にいろいろと使いたい場合は以下の判定用の関数を参考にしてみてください。自由度が無限に広がります。
関数名 | 説明 | 引数 | 返り値 |
---|---|---|---|
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_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 |
引数の使い方としては、is_single()だと投稿全体ならtrue, is_single(123)だと投稿IDが123のページの時だけtrueといった具合になります。
終わりに
最後までお読みいただきありがとうございました!
以下の記事に出力条件などの詳しい解説や参考になるサンプルソースコードもありますのでぜひ参考にしてみてください。
もし、この記事で解決できなかった置換や変換の問題があれば解決できるかもしれません。