【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とタイトルが変更されました。
記事に挿入すると、次のようなタグが入力されます。
<a href="/wordpress/2022/12/16/hello-world/">内部リンク|Hello world!</a>
特殊なケースなので一部の人だけだと思いますが、とても便利な環境になりました。
更新日:2024/02/27
関連記事
スポンサーリンク
記事の内容について

こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。