概要
get_permalink
フィルタは、投稿情報のパーマリンクを取得する際に使用されます。このフィルタを使うことで、デフォルトのパーマリンク構造を変更したり、特定の条件に基づいてパーマリンクをカスタマイズすることができます。主に以下のような機能を実装する際に利用されます。
- カスタムパーマリンク構造の設定
- SEO対策のためのURL調整
- 特定のユーザー向けのURL生成
- カスタムポストタイプ用のURL変更
- リダイレクトURLの設定
- URLのトラッキング用クエリストリング追加
- プラグインやテーマによるURL変更
- 外部サービスとの連携によるURLマッピング
構文
add_filter('get_permalink', 'your_custom_function', 10, 2);
パラメータ
$permalink
: 変更前のパーマリンク$post
: 投稿オブジェクト
戻り値
- 変更後のパーマリンク
関連する関数
使用可能なバージョン
get_permalink
フィルタはWordPress 1.5以降で使用可能です。
コアファイルのパス
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. カスタムパーマリンクを設定する
このサンプルコードは、特定の投稿タイプのパーマリンクに「custom/」を追加します。
add_filter('get_permalink', 'add_custom_prefix');
function add_custom_prefix($permalink) {
if (get_post_type() == 'custom_post') {
return home_url('/custom/' . get_post_field('post_name', get_post()));
}
return $permalink;
}
2. SEO対策のためのURL変更
このサンプルコードは、全てのパーマリンクに「?ref=123」を追加します。
add_filter('get_permalink', 'add_ref_parameter');
function add_ref_parameter($permalink) {
return $permalink . '?ref=123';
}
3. ユーザーによるカスタムURL取得
このサンプルコードは、特定のユーザーのためにパーマリンクを変えます。
add_filter('get_permalink', 'modify_permalink_for_user');
function modify_permalink_for_user($permalink) {
if (is_user_logged_in()) {
return str_replace('old-path', 'new-path', $permalink);
}
return $permalink;
}
4. カスタムポストタイプ用のパーマリンク変更
このサンプルコードは、カスタムポストタイプ「book」のパーマリンクをカスタマイズします。
add_filter('get_permalink', 'custom_book_permalink');
function custom_book_permalink($permalink) {
if (get_post_type() == 'book') {
return home_url('/books/' . get_post_field('post_name', get_post()));
}
return $permalink;
}
5. リダイレクト用のパーマリンク生成
このサンプルコードは、特定のページにリダイレクトするためのパーマリンクを設定します。
add_filter('get_permalink', 'redirect_to_another_page');
function redirect_to_another_page($permalink) {
if (is_page('old-page')) {
return home_url('/new-page');
}
return $permalink;
}
これらのサンプルコードは、WordPressの機能を拡張するために有用であり、各コード例はそれぞれ異なる状況での使用方法を示しています。