我正在研究WordPress的这个功能。
function wp_get_attachment_link( $id = 0, $size = \'thumbnail\', $permalink = false, $icon = false, $text = false ) {
$id = intval( $id );
$_post = get_post( $id );
if ( empty( $_post ) || ( \'attachment\' != $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) )
return __( \'Missing Attachment\' );
if ( $permalink )
$url = get_attachment_link( $_post->ID );
$post_title = esc_attr( $_post->post_title );
if ( $text )
$link_text = $text;
elseif ( $size && \'none\' != $size )
$link_text = wp_get_attachment_image( $id, $size, $icon );
else
$link_text = \'\';
if ( trim( $link_text ) == \'\' )
$link_text = $_post->post_title;
return apply_filters( \'wp_get_attachment_link\', "<a href=\'$url\' title=\'$post_title\'>$link_text</a>", $id, $size, $permalink, $icon, $text );
}
我想修改这一行:
return apply_filters( \'wp_get_attachment_link\', "<a href=\'$url\' title=\'$post_title\'>$link_text</a>", $id, $size, $permalink, $icon, $text );
我希望链接可以这样输出:
<a href=\'$url\' title=\'$post_title\' id=\'**my_wish_attachment_ID**\'>$link_text</a>
因为,默认打印方式如下:
<a href=\'http://link-to-image\' title=\'post-title-example\'><img src="http://link-to-thumbnail.png" class="attachment-thumbnail" alt="post-title-example" /></a>
我想这样打印出来:
<a href=\'http://link-to-image\' title=\'post-title-example\' id=\'post-title-example\'><img src="http://link-to-thumbnail.png" class="attachment-thumbnail" alt="post-title-example" /></a>
我希望附件ID可以与“帖子标题示例”相同。
我尝试了很多方法,搜索了很多谷歌。但它不起作用。
你能帮帮我吗?非常感谢。
最合适的回答,由SO网友:Simon 整理而成
添加过滤器回调时,必须提供参数计数,并将期望接收的参数添加到回调函数中。查看wp_get_attachment_link
source可以看出,在应用过滤器时提供了6个参数(链接标记和$id, $size, $permalink, $icon, $text
). 您可以这样做:
add_filter(\'wp_get_attachment_link\', \'add_id_into_link\', 10, 6);
function add_id_into_link($link, $id = null, $size = null, $permalink = null, $icon = null, $text = null) {
return str_replace(\'<a href\', \'<a id="\'. $id .\'" href\', $link);
}