ようこそのお運びで、厚く御礼申し上げます。
13日目です。前回が文字列の追加だったので、削除もしてみたいと思います。
記事のタイトルから特定の文字列を削除してみる
ある記事のページ表示のときに、記事タイトルから特定の文字列を削除してみる。
こちらも用途としてはあまりないかもしれが…削除するのに今回、正規表現を使ってみます。
あとあと、使ったりもするので試してみましょう。
まずは、functions.phpに書いてみます。
では、functions.phpに以下のコードを書きました。
function paka3_TitleDeleteStr($title, $post_ID){ if(is_single($post_ID) ){ //例: $title="タイトルだよー:【WordPress1日1プラグイン】"; //$titleから:【WordPress1日1プラグイン】だけを削除する if(preg_match('/:【.*/',$title, $regs)){ $title =str_replace( $regs[0],"", $title); } } //条件に合わない場合はそのまま返す return $title; } add_filter('the_title','paka3_TitleDeleteStr',10,2);
ポイントはどこ?
- 引数「$title」は現在表示している記事のタイトルです。
- 引数「$post_ID」は現在表示している記事のIDです。
- preg_match を$titleから正規表現使って特定の文字列を検索します。
特定の文字列があれば、 $regsに配列で値が入ります。 - str_replaceで置換をします。
$titleから$regs[0](抽出した文字列)を空文字に置換します。if(preg_match('/:【.*/',$title, $regs)){ $title =str_replace( $regs[0],"", $title); }
- add_filter:指定したフィルターフックに、関数をフックします
add_filter('フックするフィルター名','呼び出す関数名',"10","引数の数")
今回は引数を2つ使ったので、add_filterの第4引数は”2”とします。 - タイトルのフィルター名は「the_title」
コードをプラグイン用のファイルにします
それではfunctions.phpに書いたコードを消して、
「paka3_TitleDelStr.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回は正規表現を使って削除をしてみましたが、やっぱりなかなか慣れませんね。検索とか置換する場合は正規表現は必須なので、複雑にならない程度に処理を覚えていこうと思います。