从早于特定日期的帖子中删除精选图片

时间:2016-04-13 作者:Tyler Johnson

我经营着一个由数百名编辑组成的网站网络,最近有图像版权巨魔在追击我们。这些图片中的大多数都是一年或更老的,所以我们希望从超过6个月的帖子中删除所有图片。

目前,我已经编写了一个插件,它使用SQL查询从帖子内容中删除图像,并在每日cron上运行。我唯一搞不清楚的是,删除这些帖子上的特色图片,这让我头痛不已。以下工作,如果手动完成:

delete_post_thumbnail( POST ID HERE );
但是,如果我使用foreach循环运行查询,它将不起作用。所以,我有一些根本不起作用的东西:

function featured_image_removal() {
  $args = array(
    \'post_type\'      => \'post\',
    \'post_status\'    => \'publish\',
    \'posts_per_page\' => -1,
    \'date_query\'         => array(
      \'column\' => \'post_date\',
      \'after\'  => \'-180 days\'
    )
  );

  $posts = get_posts($args);

  foreach($posts as $post) {
    delete_post_thumbnail($post->ID);
  }
}
我的功能,featured\\u image\\u removation,然后通过cron运行。cron正在工作,因为我的另一个功能(从帖子内容中删除图像)工作得非常好。

你知道为什么这样不行吗?它可能就在我的面前,我已经看了很久了,我没有看到它。任何帮助都将不胜感激!帮我别再把头撞在桌子上了D

1 个回复
SO网友:Rarst

我认为你主动放弃这里的数据可能是在开玩笑。如果下个月巨魔消失了,你改变主意,想要所有这些特色图片回来怎么办?

我只想在前端通过编辑模板和使缩略图输出有条件或过滤API来抑制它们,如下所示:

if ( ! is_admin() ) {

    add_filter( \'get_post_metadata\', function ( $null, $post_id, $meta_key ) {

        if ( \'_thumbnail_id\' === $meta_key ) { // add check for date or whatever
            return false;
        }

        return $null;
    }, 10, 3 );
}
这样,您可以保留所有现有数据,只需阻止显示特征图像即可。如果你改变主意,只需取消支票,一切就都回来了。