概要
sanitize_titleフィルタは、WordPressの投稿やページのタイトルから無効な文字を除外するために使用されます。このフィルタを利用することで、クリーンでSEOフレンドリーなスラッグを生成し、データベースに保存することができるようになります。そのため、特に以下のような機能を実装する際によく使われます。
- URLスラッグの生成
- 投稿やページの属性設定
- タクソノミーのスラッグ設定
- カスタムフィールドでのデータ整形
- テーマやプラグインのオプション保存
- REST APIのエンドポイントでのデータ管理
- ユーザーインターフェースのユーザビリティ改善
- SEO対策
構文
add_filter('sanitize_title', 'your_custom_function', 10, 2);
パラメータ
sanitize_title– フィルタ名your_custom_function– フィルタを適用する任意の関数名10– 優先順位(デフォルトは10)2– 渡す引数の数(デフォルトは1)
戻り値
- フィルタ処理されたタイトル(文字列)。
関連する関数
使用可能なバージョン
- 初めて導入されたのは WordPress 2.1 です。
コアファイルのパス
wp-includes/post.php
サンプルコード
サンプル1: タイトルからスペースをハイフンに変換
これにより、投稿タイトルに含まれる空白をハイフンに変換します。
add_filter('sanitize_title', function($title) {
return str_replace(' ', '-', $title);
});
このコードは、タイトルからスペースをハイフンに置き換え、よりURLフレンドリーな形式にします。
サンプル2: 小文字に変換
タイトルを小文字に変換します。
add_filter('sanitize_title', function($title) {
return strtolower($title);
});
このコードは、タイトルを小文字にすることで、URLの一貫性を保ちます。
サンプル3: 特定の禁止文字の除去
特定の禁止文字をタイトルから除去します。
add_filter('sanitize_title', function($title) {
return preg_replace('/[^a-z0-9-]/', '', $title);
});
このコードは、英小文字、数字、ハイフン以外の文字をタイトルから削除します。
サンプル4: 許可されていない文字に置き換え
タイトルから無効な文字を特定の文字に置き換えます。
add_filter('sanitize_title', function($title) {
return str_replace(['@'], '-', $title);
});
このコードは、タイトル内の「@」をハイフンに置き換えます。
サンプル5: セクションタイトルの接頭辞追加
接頭辞を付けてセクションタイトルを整形します。
add_filter('sanitize_title', function($title) {
return 'section-' . $title;
});
このコードは、すべてのタイトルに「section-」という接頭辞を付けます。
この関数のアクションでの使用可能性
| アクション | 使用可能 |
|---|---|
| mu_plugin_loaded | 〇 |
| registered_post_type | 〇 |
| plugins_loaded | 〇 |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head | 〇 |
非推奨のバージョン
- 特に非推奨または削除されたバージョンはありません。