Blogブログ

リッキー | 2023.11.21

コピペでOK!WordPressのパーマリンクに日本語が含まれている場合に自動変換させる方法

  • wordpress
  • コピペ
コピペでOK!WordPressのパーマリンクに日本語が含まれている場合に自動変換させる方法

この記事では、こんなお悩みを解決できます!

・WordPressで記事を書いてパーマリンクが日本語のままよく公開してしまうのをどうにかしたい…
・パーマリンクが日本語の場合、自動で英語に変換できないかな…

今回は、コピペで簡単にできるWordPressのパーマリンクに日本語が含まれている場合に記事IDへ自動変換させる方法をご紹介していきます!

パーマリンクとは?

パーマリンクとは、「パーマネントリンク(Permanent Link)」の略でURL全体を指す言葉です。

つまりwebサイトの1つ1つの各ページを区別するためのWeb上の「住所」のようなものです。

例)Webページを開くとアドレスバーに表示される「URL」このURLがパーマリンクになります。

https://test.jp/category/post-000

このパーマリンクですが、日本語でも使えるようになってはいますが、実は使えるのはアルファベットだけなんです。

URLエンコードと呼ばれるURLに使ってダメな文字を使っていい文字の組み合わせに変換されてしまいます。

例)

https://test.jp/category/日本語の記事です

↓ ※URLエンコードされると以下のようになります。

https://test.jp/category/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%A7%E3%81%99

このようにURLが長くなってしまいます。

デメリットとしては下記があげられます。

・エラーの原因になりやすい
・複雑なURLになり文字制限のあるサービスでシェアできない
・クリックするのを躊躇う(怪しい・怖いなどの心理的不安)

これらを未然に防ぐ方法をさっそく解説していきます。

完成イメージ

パーマリンクが日本語の状態で「下書き保存or公開」ボタンをクリックすると日本語が自動で記事IDに変換されます。

パーマリンクに日本語が含まれている
パーマリンクが自動変換される

実装する手順

functions.phpにコードの追加

functions.phpに下記コードを追加します。

/**
* スラッグの日本語を自動変換
*/

function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
    // URLスラッグに特定のパターンが含まれている場合
    if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
        // 投稿のタイプ(post_type)をURIエンコードし、投稿IDをつなげて新しいスラッグに設定
        $slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
    }
    // 新しいスラッグを返す
    return $slug;
}

// wp_unique_post_slugフィルターに自動生成関数を追加
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );

※WordPressの管理画面から追加する場合

(functions.phpを触るので必ずバックアップを行ってください。)

「外観>テーマディター」から編集します。

functions.phpに同じコードを追加して「ファイルを更新」をクリック

おまけ:コードの解説

function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
    // URLスラッグに特定のパターンが含まれている場合
    if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
        // 投稿のタイプ(post_type)をURIエンコードし、投稿IDをつなげて新しいスラッグに設定
        $slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
    }
    // 新しいスラッグを返す
    return $slug;
}

auto_post_slug 関数は、WordPressが投稿のスラッグを生成するときに呼び出される関数です。引数として、元のスラッグ $slug、投稿のID $post_ID、投稿のステータス $post_status、投稿のタイプ $post_type を取ります。

関数内で、正規表現 preg_match を使用して、スラッグに特定のパターン(ここでは %[0-9a-f]{2})が含まれているかどうかを確認しています。もし含まれていれば、次の処理が行われます。

utf8_uri_encode 関数を使用して、投稿のタイプ($post_type)をURIエンコード(特殊文字を変換する)し、投稿ID($post_ID)をハイフンでつなげて新しいスラッグに設定、最後に変更されたかどうかにかかわらず、新しいスラッグを返します。

// wp_unique_post_slugフィルターに自動生成関数を追加
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );

add_filter 関数は、WordPressのフィルターに新しいフィルター関数を追加するためのものです。

wp_unique_post_slug フィルターに auto_post_slug 関数を追加しています。このフィルターは、投稿のスラッグが重複した場合にスラッグを一意にするために使用されます。10 は優先度で、4 は関数に渡される引数の数です。

まとめ

今回は、コピペで簡単にできるWordPressのパーマリンクに日本語が含まれている場合に自動変換させる方法をご紹介していきました!

自分自身、ブログを書いているときついついパーマリンクを日本語のまま公開してしまい、後で修正するということがよくありました。

ご参考になれば幸いです。

以上、「コピペでOK!WordPressのパーマリンクに日本語が含まれている場合に自動変換させる方法」でした。

ありがとうございました!

この記事を書いた人

リッキー デザイナー

関連記事

Recommend愛されているブログ