1つのカスタム投稿タイプの投稿をすべて削除する安全で迅速な方法を探しています。返された投稿ごとにget_posts()
and wp_delete_post()
を使用しても機能しません。膨大な量のデータベースクエリが含まれるため、十分な速度ではありません(タイムアウトエラー)。
できれば、カスタムの投稿タイプであるすべての投稿を削除する単一のデータベースクエリを探しています。何かご意見は?
これは1回限りのイベントですか?その場合、phpMyAdminを介した簡単なSQLクエリが最も簡単なようです。これがプログラム的に/繰り返し実行する必要があるハウスキーピング手順である場合、それはあなたを助けません。
—
jdm2112 2015年
残念ながら、手動でデータベースにアクセスすることなく、定期的に実行する必要があります。
—
Marcus McLean
了解。そのときは
—
jdm2112 '13
wpdb
クラスを見ることをお勧めします。DBを直接操作するための推奨される方法と「WPの方法」。そのクエリについてサポートが必要な場合はお知らせください。必要に応じて後で完全な回答を投稿できますcodex.wordpress.org/Class_Reference/wpdb
'fields' => 'ids',
in get_posts
を使用して投稿IDのみを取得します。これだけで
@MarcusMcLean:明らかに、あなたは私のポイントを逃しました;)単一の投稿は、postsテーブル、postmetaテーブル、taxonomyテーブル、そして場合によってはoptionsテーブルにデータを持っています。これらの投稿を削除するために記述する純粋なSQLクエリは非常に複雑になります。あなたはそれらの様々なテーブルに物事を置き去りにする良いチャンスに立っています。たとえば、Core関数を使用して5分間隔で一度に50個ずつ削除します
—
s_ha_dum
wp_cron()