概要
wp_targeted_link_rel
フィルタは、WordPressにおいて、<a>
要素のrel
属性にnoreferrer
とnoopener
を追加するために使用されます。このフィルタを利用すると、外部リンクを開く際のセキュリティとパフォーマンスの向上が図れます。具体的には、リンク先でのリファラ情報の漏洩を防ぎ、開かれた新しいタブが元のページへのアクセスをすることを防止します。
このフィルタは、例えば次のような機能を実装する際によく使われます。
- 外部リンクのセキュリティ向上
- リファラ情報の隠蔽
- ブラウザのパフォーマンス改善
- サイトのSEO対策
- リンクを自動的に処理するプラグイン開発
- テーマのカスタマイズ
- 社外リソースへのリンク管理
- ポリシーに基づくリンク管理
構文
add_filter('wp_targeted_link_rel', 'your_function_name', 10, 2);
パラメータ
- $rel – 現在の
rel
属性の値 - $url – リンク先のURL
戻り値
フィルタ処理後のrel
属性の値。
関連する関数
wp_targeted_link_relフィルタに関連する関数
利用可能なバージョン
WordPress 4.0以降
コアファイルのパス
wp-includes/link-template.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 | 〇 |
サンプルコード
サンプルコード1: noreferralとnoopenerを追加
add_filter('wp_targeted_link_rel', function($rel, $url) {
return $rel . ' noreferrer noopener';
}, 10, 2);
このコードは、すべての外部リンクにnoreferrer
とnoopener
を追加します。
サンプルコード2: 特定のドメインへの条件付き追加
add_filter('wp_targeted_link_rel', function($rel, $url) {
if (strpos($url, 'example.com') !== false) {
return $rel . ' noreferrer noopener';
}
return $rel;
}, 10, 2);
このコードは、特定のドメイン(例としてexample.com
)への外部リンクにのみnoreferrer
とnoopener
を追加します。
サンプルコード3: 自前の問い合わせを行う場合
add_filter('wp_targeted_link_rel', function($rel, $url) {
// ここでカスタムロジックを追加
// e.g., リンクの確認やログ記録など
return $rel . ' noreferrer noopener';
}, 10, 2);
このコードでは、フィルタ内のロジックをカスタマイズするためのひな形を示しています。
サンプルコード4: リンク先のURLのチェック
add_filter('wp_targeted_link_rel', function($rel, $url) {
if (filter_var($url, FILTER_VALIDATE_URL)) {
return $rel . ' noreferrer noopener';
}
return $rel;
}, 10, 2);
このコードは、有効なURLに対してのみnoreferrer
とnoopener
を追加します。
サンプルコード5: 他のフィルタとの連携
add_filter('wp_targeted_link_rel', function($rel, $url) {
// 他のフィルタからのデータを使用する
$additional_rel = apply_filters('custom_rel_filter', '');
return $rel . ' ' . $additional_rel . ' noreferrer noopener';
}, 10, 2);
このコードでは、別のフィルタから取得した情報を使って、rel
属性の値を動的に変更します。