WordPress网站建设宣传图片

WordPress批量去除文章失效特色图片或所有特色图片

释放双眼,带上耳机,听听看~!

WordPress批量去除文章失效特色图片或所有特色图片方法分享:

当我们的WordPress网站运营很长时间或者是有时候可能会出现一部分的文章以前是单独设置的特色图片(缩略图)已经失效了,又或者网站搬家数据迁移、更换主题等情况设置的缩略图不匹配等等情况,就需要清除缩略图。

通用说明

下面我给出了三个不同的方式用于删除文章特色图片,它们会适用于不同的使用情况,你可以看描述根据自己的需求去选择。

但是它们都有共同点,就是都是通过把代码添加到主题的functions.php文件中实现,所以推荐你使用WPCode 代码片段插件,你可以直接将上述代码添加为一个新的代码片段开启,关于这个插件的介绍推荐你看我之前文章:WordPress代码片段插件 WPCode

其次是把它们加入到你的主题function文件中之后,刷新一下你的网站,确认你WordPress网站的文章特色图片被删除后(这个时候就要记得清理网站、浏览器的CDN、各种缓存 避免出乌龙,明明删除了以为没删除。),删除或者关闭对应的代码,不然你以后设置的特色图片可能还是会被删除。

在删除之后还可以配合我之前分享的:wordpress自动设置第一张图为特色图片方法一起使用。哈哈,贴心吧。

删除已失效的WordPress文章特色图片

// 删除已失效的WordPress文章特色图片
// https://www.linfengnet.com/
function check_and_delete_thumbnail() {
    // 获取当前文章的特色图片ID
    $thumbnail_id = get_post_thumbnail_id();

    // 如果特色图片ID存在
    if ( $thumbnail_id ) {
        // 获取特色图片的URL
        $thumbnail_url = wp_get_attachment_image_src( $thumbnail_id, 'full' );

        // 使用curl检查特色图片是否可以正常访问
        $ch = curl_init($thumbnail_url[0]);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        // 如果特色图片无法正常访问
        if ($httpCode != 200) {
            // 删除特色图片
            delete_post_thumbnail( get_the_ID() );
        }
    }
}
add_action( 'wp', 'check_and_delete_thumbnail' );

上面代码的会获取文章特色图片的URL,然后访问判断HTTP状态码是否等于200,如果是的话则代表正常,如果不是则移除,详细的代码解释看下下面吧:

代码解释

  1. get_post_thumbnail_id()
    • 这个函数用于获取当前文章的特色图片ID。
  2. if ( $thumbnail_id ) {...}
    • 这个条件判断用于检查特色图片ID是否存在。如果存在,则执行花括号内的代码。
  3. wp_get_attachment_image_src( $thumbnail_id, 'full' )
    • 这个函数用于获取特色图片的URL。参数'full'表示获取原始尺寸的图片。
  4. curl_init($thumbnail_url[0])
    • 这行代码使用cURL初始化一个新的会话,用于检查特色图片的URL是否可以正常访问。
  5. curl_setopt($ch, CURLOPT_NOBODY, true)
    • 这行代码设置cURL选项,CURLOPT_NOBODY设置为true表示只需要获取HTTP头部信息,不需要获取具体的内容。
  6. curl_exec($ch)
    • 这行代码执行cURL会话。
  7. curl_getinfo($ch, CURLINFO_HTTP_CODE)
    • 这行代码获取HTTP响应状态码。
  8. if ($httpCode != 200) {...}
    • 这个条件判断用于检查HTTP响应状态码是否为200。如果不是200,表示特色图片无法正常访问,然后执行花括号内的代码。
  9. delete_post_thumbnail( get_the_ID() )
    • 这个函数用于删除当前文章的特色图片。
  10. add_action( 'wp', 'check_and_delete_thumbnail' )
    • 这行代码将check_and_delete_thumbnail函数挂载到wp动作上,这意味着当WordPress加载任何页面时,都会执行这个函数。

删除所有特色图片

delete_post_meta_by_key( '_thumbnail_id' );

代码解释

delete_post_meta_by_key函数会根据你给出的文章元字段的键删除对应的数据

了解详细请你自己看官方文档:delete_post_meta_by_key() – Function | Developer.WordPress.org

删除指定类型的内容特色图片

function remove_all_featured_images() {
    $args = array(
        'post_type'      => array( 'post', 'page' ), // 查找文章/页面 在这增加或删减要删除的类型
        'post_status'    => 'any', // 查找所有状态的文章和页面
        'posts_per_page' => -1 // 获取所有符合条件的文章和页面
    );

    $posts_with_thumbnail = get_posts( $args );

    foreach ( $posts_with_thumbnail as $post ) {
        remove_post_thumbnail( $post->ID ); // 删除特色图片
    }
}
add_action( 'init', 'remove_all_featured_images' );

代码解释

上面代码会根据你指定的类型去获取对应的所有内容然后删除特色图片,详细的代码解释看下下面吧:

  1. $args = array(...)
    • 这个数组定义了get_posts函数的参数,用于获取所有的文章和页面。
  2. 'post_type' => array( 'post', 'page' )
    • 这个参数指定了要获取的文章类型,包括文章('post')和页面('page')。
  3. 'post_status' => 'any'
    • 这个参数指定了要获取的文章状态,'any'表示获取所有状态的文章和页面。
  4. 'posts_per_page' => -1
    • 这个参数指定了每页要获取的文章数量,-1表示获取所有符合条件的文章和页面。
  5. $posts_with_thumbnail = get_posts( $args )
    • 这行代码调用get_posts函数,获取所有符合条件的文章和页面,并将结果存储在$posts_with_thumbnail变量中。
  6. foreach ( $posts_with_thumbnail as $post ) {...}
    • 这个循环遍历所有获取到的文章和页面。
  7. remove_post_thumbnail( $post->ID )
    • 这个函数用于删除当前遍历到的文章或页面的特色图片。
  8. add_action( 'init', 'remove_all_featured_images' )
    • 这行代码将remove_all_featured_images函数挂载到init动作上,这意味着当WordPress初始化时,都会执行这个函数。

wordpress图片设置相关的文章

给TA打赏
共{{data.count}}人
人已打赏
WordPress技巧WordPress插件分享

WordPress如何回退/降级版本

2024-1-8 12:47:35

WordPress与SEOWordPress插件分享

WordPress文章失效图片/链接检测插件推荐:Broken Link Checker

2024-1-10 14:07:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录