如何将rel属性添加到包含其类别的图像?

时间:2014-08-15 作者:heytricia

我已经将类别添加到图像中,以便可以使用它们来过滤公文包页面中的图像。现在,我想我需要为每个包含指定类别的图像添加rel属性。这是正确的方法吗?如果是这样,我如何将add rel添加到适用的类别中?

2 个回复
最合适的回答,由SO网友:birgire 整理而成

这应该适用于rel 属性:

/**
 * Create a rel attribute from the image categories
 *
 * @see http://wordpress.stackexchange.com/a/158024/26350
 */

add_filter( \'get_image_tag\', 
    function( $html, $id )
    {
        $rel = array();

        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $rel[] = $cat->slug; 
        }

        return str_ireplace( 
            \'<img \', 
            sprintf( \'<img rel="%s" \', join( \' \', $rel ) ),
            $html
        );
    }
, 10, 2 );
我们使用get_image_tag 筛选以修改插入的图像HTML。

Ps:我刚刚在WordPress 3.9.2安装中成功地测试了这一点,我使用了以下代码片段:

add_action( \'init\',
    function()   
    {
        register_taxonomy_for_object_type( \'category\', \'attachment\' );
    }
);
激活附件的类别。

SO网友:heytricia

最后,我稍微修改了一下,使用数据过滤器而不是rel。工作完美,符合标准。

add_filter( \'get_image_tag\', 
    function( $html, $id )
    {
        $dataFilter = array();

        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $dataFilter[] = $cat->slug; 
        }

        return str_ireplace( 
            \'<img \', 
            sprintf( \'<img data-filter="%s" \', join( \' \', $dataFilter ) ),
            $html
        );
    }
, 10, 2 );

结束

相关推荐

Resize images in batch

我想调整服务器上的图像大小,我的WordPress站点库中有7000多个图像。我想调整服务器本身上所有图像的大小。我知道可以使用“重新生成缩略图”插件,但为此,我将不得不整天打开浏览器窗口,甚至可能在中间某个地方崩溃,这将导致我再次调整所有图像的大小。有谁有更好的主意来做这件事吗?请简要解释答案。