概要
wp_get_attachment_link
フィルタは、添付ファイルへのリンクを示すHTMLテキストを取得する際に使用されます。これを使うことで、添付ファイルのリンクの出力をカスタマイズすることができます。具体的には、以下のような機能を実装する際によく使われます:
- 添付ファイルのリンクに特定のクラスを追加する
- リンクのタイトル属性を変更する
- 添付ファイルの表示スタイルをカスタマイズする
- リンクのURLを変更する
- 指定した条件に基づいてリンクを表示するかどうかを制御する
- 特定の種類の添付ファイルのみを表示する
- リンクにアイコンを追加する
- 利用者の役割に基づいてリンクの可視性を制御する
このフィルタは、WordPressのコアファイルwp-includes/post-template.php
に含まれています。使用可能なバージョンはWordPress 2.6以降です。
構文
apply_filters('wp_get_attachment_link', $html, $id, $size, $permalink, $icon);
パラメータ
$html
(string): 添付ファイルへのリンクを示すHTMLテキスト。$id
(int): 添付ファイルのID。$size
(string): サムネイルサイズ。$permalink
(string): 添付ファイルのパーマリンク。$icon
(bool): アイコンを表示するかどうか。
戻り値
- (string): フィルタリングされたHTMLテキスト。
関連する関数
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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: クラスを追加
add_filter('wp_get_attachment_link', 'add_custom_class_to_attachment');
function add_custom_class_to_attachment($html, $id) {
return str_replace('class="', 'class="custom-class ', $html);
}
このサンプルコードは、アタッチメントのHTMLリンクに「custom-class」というクラスを追加します。
サンプル2: タイトル属性の変更
add_filter('wp_get_attachment_link', 'change_attachment_title', 10, 2);
function change_attachment_title($html, $id) {
$new_title = 'Custom Title for Attachment ID: ' . $id;
return str_replace('title="', 'title="' . esc_attr($new_title) . '" ', $html);
}
このコードは、添付ファイルのリンクのタイトル属性を変更します。
サンプル3: アイコンの追加
add_filter('wp_get_attachment_link', 'add_icon_to_attachment', 10, 5);
function add_icon_to_attachment($html, $id, $size, $permalink, $icon) {
if ($icon) {
$html = '<span class="icon-attachment"></span>' . $html;
}
return $html;
}
これは、アイコンを追加するコードです。アイコンはリンクの前に追加されます。
サンプル4: 特定の条件でリンクを制御
add_filter('wp_get_attachment_link', 'conditional_attachment_link', 10, 5);
function conditional_attachment_link($html, $id, $size, $permalink, $icon) {
if (current_user_can('editor')) {
return $html; // 編集者だけが見られる
}
return ''; // 権限がない場合はリンクを非表示
}
このサンプルでは、編集者だけが添付ファイルのリンクを表示できるようにしています。
サンプル5: URLの変更
add_filter('wp_get_attachment_link', 'change_attachment_url', 10, 5);
function change_attachment_url($html, $id, $size, $permalink, $icon) {
$new_url = 'https://example.com/custom-url/' . $id;
return str_replace($permalink, $new_url, $html);
}
このコードは、添付ファイルへのリンクのURLをカスタマイズします。特定のURLにリダイレクトされています。