ENGINEERING&RUN

26.2マイルを走る僕の旅

WordPressで特定のカテゴリのアイキャッチを全て削除するバッチ処理

WordPressの案件で、今あるアイキャッチ画像を全て削除し、他の画像データ群に置き換える必要が出てきた。
アイキャッチが割り当てられている投稿が10万件近くある為、バッチ処理で行うことに。

備忘録的に残す。というかWordPressバッチ処理の日本語記事、少なすぎじゃないかなと思うのでこれから残していく。  

batch.php

<?php
require_once('wp-load.php');
require_once('wp-config.php');

// 特定のカテゴリを選択
$category_id = get_cat_ID('牛脂');

$results = $wpdb->get_results("
    SELECT *
    FROM wp_postmeta
    WHERE post_id in 
      (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = 
        (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = $category_id)
      )
    AND meta_key = '_thumbnail_id'
");

foreach ($results as $value) {
  delete_post_meta($value->post_id, '_thumbnail_id');
}
?>

実行方法

これをphp batch.phpといった具合で実行してあげればOK。
副々問い合わせなのでちょっと冗長かな。