概要
the_permalink
は、WordPressにおいてパーマリンクを表示するためのフィルタです。このフィルタは、記事やページのURLを取得する際に、そのURLを変更したりカスタマイズしたりするために使用されます。具体的には、以下のような機能を実装する際に役立ちます。
- URLの一部を置換する
- URLに特定のクエリパラメータを追加する
- 特定の条件に基づいてURLを変更する
- URLのプロトコル(http/https)を変更する
- カスタムエンドポイントを追加する
- 外部サイトへのリダイレクトURLを設定する
- SEOのためにURLを整形する
- カスタム投稿タイプのURLを変更する
構文
add_filter('the_permalink', 'your_custom_function');
パラメータ
$permalink
:フィルタ対象の元のパーマリンク(文字列)。$post
:現在の投稿オブジェクト(WP_Post)。
戻り値
- 変更されたパーマリンク(文字列)。
関連する関数
使用可能なバージョン
このフィルタはWordPressのバージョン1.5以降に利用可能です。
コアファイルのパス
wp-includes/link-template.php
サンプルコード
サンプルコード1: プロトコルをhttpsに変更
add_filter('the_permalink', 'force_https_permalink');
function force_https_permalink($permalink) {
return str_replace('http://', 'https://', $permalink);
}
このコードは、すべてのパーマリンクをhttpからhttpsに変更します。別のプロトコルを強制したい場合などに使用します。
サンプルコード2: 特定のクエリパラメータを追加
add_filter('the_permalink', 'add_custom_query_param');
function add_custom_query_param($permalink) {
return add_query_arg('ref', 'my_custom_ref', $permalink);
}
このコードは、全てのパーマリンクに?ref=my_custom_ref
というクエリパラメータを追加します。アフィリエイトリンクなどで利用されます。
サンプルコード3: 投稿タイプによってURLをカスタマイズ
add_filter('the_permalink', 'custom_post_type_permalink');
function custom_post_type_permalink($permalink) {
if (is_singular('my_custom_post_type')) {
return str_replace('my_custom_post_type', 'custom', $permalink);
}
return $permalink;
}
このコードは、特定のカスタム投稿タイプのパーマリンクの一部を変更します。特定のURL形式が必要な場合に便利です。
サンプルコード4: 投稿のみの固定URLに変更
add_filter('the_permalink', 'change_permalink_for_post');
function change_permalink_for_post($permalink) {
if (is_single()) {
return '/fixed-url/' . get_post_field('post_name', get_post()) . '/';
}
return $permalink;
}
このコードは、投稿のパーマリンクを’/fixed-url/[スラッグ]’の形式に変更します。固定された形式で訪問者に提供したいときに使います。
サンプルコード5: リダイレクトURLを指定
add_filter('the_permalink', 'redirect_old_permalink');
function redirect_old_permalink($permalink) {
if (strpos($permalink, 'old-page') !== false) {
return 'http://example.com/new-page/';
}
return $permalink;
}
このコードは、特定の古いURLを新しいURLにリダイレクトします。移行作業で古いURLが含まれる場合に役立ちます。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 | 〇 |
the_permalink
フィルタは、これらのアクションフックの一部で使用されていますが、その他のアクションにおいては使用例がありません。