将自定义ID插入wp_Get_Attach_link

时间:2013-02-17 作者:Sang Dang

我正在研究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可以与“帖子标题示例”相同。

我尝试了很多方法,搜索了很多谷歌。但它不起作用。

你能帮帮我吗?非常感谢。

1 个回复
最合适的回答,由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);
} 

结束

相关推荐

Get attachments by user

有没有办法通过用户获取附件?我需要一种方式来显示特定用户上传的所有图像。(我可能需要附件ID以便使用wp_get_attachment_url 以显示它们。)