PHP

【WordPress】投稿画面のリンク挿入で内部リンクのURLやタイトルを変更する方法

更新日:2024/02/27

WordPressの投稿画面で内部リンクを挿入するときURLやタイトルの形式を変更したいケースがあります。
その方法をお伝えします。


2023/06/19 コードの一部に誤りがあったため訂正しました

 

やりたいこと

WordPressの投稿画面はテキスト、ビジュアル、ブロックと3種類ありますが、内部リンクについてはいずれも次のようなリンク挿入画面が表示されます。

リンク挿入画面

例えば、URLを相対URLにしたい時はURL欄を変更すればいいです。

しかし毎回は面倒。
だから、最初から相対URLで表示したい。

 

wp_link_queryフィルターで変更する

WordPressのリンク挿入画面は下部の検索結果を表示するときに admin-ajax.php を呼び出して、情報を取得しています。

実際に情報を生成するのは、_WP_Editors::wp_link_query()関数です。
この関数は、最後にwp_link_queryフィルターを呼び出します。
このフィルターを使用することで、URL等を変更できます。

wp_link_queryフィルター使用例

add_filter('wp_link_query',function($results, $query){
    
    $domain = str_replace( home_url('','relative'),'',home_url());
    foreach($results as &$r){
           // 相対リンクに変換
        $r['permalink'] = str_replace( $domain,'',$r['permalink']);
           // タイトルを変更
        $r['title'] = '内部リンク|'.$r['title'];
    }
    return $results;
},10,2);

wp_link_queryフィルター関数は、二つの引数を受け付けます。

  • $results:

    $resultsは、次の連想配列の配列です。

    array(
        'ID' => 記事ID
        'title' => 記事名
        'permalink' => URL
        'info' => 日付またはページ名
    );
    
  • $query:

    $queryは、情報を取得するときにWP_Queryに渡した引数です。

フィルターを適用した結果、次のようにURLとタイトルが変更されました。

wp_link_queryフィルター適用結果

記事に挿入すると、次のようなタグが入力されます。

<a href="/wordpress/2022/12/16/hello-world/">内部リンク|Hello world!</a>

特殊なケースなので一部の人だけだと思いますが、とても便利な環境になりました。

WordPressはHTMやCSSの知識も必要。総合的な知識を身につけよう。

更新日:2024/02/27

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。