ワードプレスのget_permalinkフィルタの使用方法・解説

概要

get_permalinkフィルタは、投稿情報のパーマリンクを取得する際に使用されます。このフィルタを使うことで、デフォルトのパーマリンク構造を変更したり、特定の条件に基づいてパーマリンクをカスタマイズすることができます。主に以下のような機能を実装する際に利用されます。

  1. カスタムパーマリンク構造の設定
  2. SEO対策のためのURL調整
  3. 特定のユーザー向けのURL生成
  4. カスタムポストタイプ用のURL変更
  5. リダイレクトURLの設定
  6. URLのトラッキング用クエリストリング追加
  7. プラグインやテーマによるURL変更
  8. 外部サービスとの連携による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の機能を拡張するために有用であり、各コード例はそれぞれ異なる状況での使用方法を示しています。

この関数について質問する


上の計算式の答えを入力してください