WordPressの開発環境を構築した時に、本番サーバーからデータベースをダンプしてインポートしても、大量のデータがあると開発環境の動きが非常に遅くなります。
そこで、不要なデータを削除するときのプログラムを紹介します。
このプログラムは、「投稿」「ユーザーデータ」「WooCommerceの注文データ」を削除する場合になります。
間違って本番環境で実行してしまうと大変なことになるので、開発環境でのみ実行してください。
<?php
include_once( dirname(__FILE__) . '/../../../wp-load.php' );
include_once(ABSPATH.'wp-admin/includes/user.php');
//userを削除したい時
$users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach($users as $user){
$user_id = $user->ID;
if($user_id < 10){continue;}
wp_delete_user($user_id);
}
//2023年1月1日以前のpostを削除したい時
$array = get_posts([ 'posts_per_page' => -1,
'post_type' => 'post',
'fields' => 'ids',
'post_status' => 'any',
'date_query' => array(
array(
'before' => array(
'year' => 2023,
'month' => 1,
'day' => 1,
),
'inclusive' => true,
),
),
]);
foreach($array as $id){
wp_delete_post($id,true);
}
//2023年1月1日以前の画像を削除したい時
$array = get_posts([
'posts_per_page' => -1,
'post_type' => 'attachment',
'fields' => 'ids',
'post_status' => 'any',
'date_query' => array(
array(
'before' => array(
'year' => 2023,
'month' => 1,
'day' => 1,
),
'inclusive' => true,
),
),
]);
foreach($array as $id){
wp_delete_post($id,true);
}
//woocommerceの注文情報を削除したい時
$array = get_posts([
'posts_per_page' => -1,
'post_type' => 'shop_order',
'fields' => 'ids',
'post_status' => 'any',
]);
foreach($array as $id){
wp_delete_post($id,true);
}
このプログラムを書いたphpファイルを用意してテーマフォルダのトップディレクトリに配置し、あとはそれをコマンドラインから実行します。