如何删除我的主题中显示的缩略图的所有实例?

时间:2017-07-21 作者:Dany M

基本上,我希望所有的缩略图都被一个空字符串或类似的东西所取代。一些我可以添加到插件或函数中的代码。php

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

由于各种原因,不建议通过替换URL来执行此操作。例如,如果这样做,则删除原始图像后不会删除缩略图,因为您已断开数据库中的链接。

另一个原因是,如果您尝试访问默认大小生成的缩略图,它将重定向到简单的页面加载。例如:

http://example.com/uploads/test.jpg

成为:

http://example.com/

这意味着对主页的完整请求、加载每个资产、请求更多链接,然后继续。

正确的方法是取消设置默认大小。你可以加入intermediate_image_sizes_advanced 过滤并执行以下操作:

function unset_default_thumbnails( $sizes) {
    unset( $sizes[\'thumbnail\']);
    unset( $sizes[\'medium\']);
    unset( $sizes[\'medium-large\']);
    unset( $sizes[\'large\']);

    return $sizes;
}
add_filter(\'intermediate_image_sizes_advanced\', \'unset_default_thumbnails\');
完成。现在,上载图像后将不会生成缩略图。仍将生成您自己的缩略图大小。

要删除当前缩略图,可以使用Thumbnail Cleaner 插件。

更新根据您的评论,我添加了一种方法来替换the_post_thumbnail() 使用空字符串。这是not 推荐。

add_filter( \'post_thumbnail_html\', \'disable_post_thumbnails\' ,10 , 5 );
function disable_post_thumbnails( $html, $post->ID, $post_thumbnail_id, $size, $attr ){
    // Check if the image is true
    if ( $html ) {
        switch ( $size ) {
            case \'post-thumbnail\':
            case \'thumbnail\':
            case \'medium\':
            case \'medium-large\':
            case \'large\':
                // Let\'s replace the thumbnail\'s URL with the
                // website\'s URL for only the default sizes
                $html = str_replace( $html , \'<img src="\'.site_url().\'"/>\' , $html );
                break;
            default:
                break;
        }
    }
    // Return the URL
    return $html;
}
请注意,一旦声明了一个函数,就不能删除它。你能做的就是过滤它的输入/输出,如果它确实支持的话。

PS: 这会破坏插件/主题的行为。这只是出于教育目的,不要在家里尝试。

结束

相关推荐

Thumbnails different sizes

我正在使用以下代码从帖子类别中提取特色图片。我在模板中又重复了3次这段代码,以添加不同的类别。我想所有的图像都是相同的大小,但都是不同的大小。我尝试在函数中创建新的自定义图像缩略图大小(预览缩略图)。phpadd_theme_support( \'post-thumbnails\' ); // this enable thumbnails add_image_size( \'preview-thumb\', 300, 185, true ); //this sets your default si