web-dev-qa-db-ja.com

sQLクエリによる孤立した分類用語の削除

私はこれらのCPTのそれぞれにcronジョブによって与えられた時間スケールで自動削除するように設定されている3つのカスタム投稿タイプがあります、それらが削除されるときそれはドロップダウンなどで孤立した分類学用語を置き去りにしますそれは "quack quack oops 404 error"に行きます、私は孤立したタグに対して実行するSQLクエリを見つけることができますが、分類用語に関連するものはほとんど(事実上私は何も見いだしていません)この?

詳細情報
私の用語はすべて分類法に事前に割り当てられており、wp_termsテーブルにリストされています。それらが事前に割り当てられているのは、新しい投稿の作成時に作成者がオプションメニューから選択するためです。削除クエリを実行するために情報を取得する必要があるテーブルは、wp_termsテーブルに残っている必要があります。wp_terms_taxonomy、wp_terms_relationships、およびwp_postsは、NULLの投稿IDの一致を探すためのものです。何が私の切り株です。

私は Scribusクエリ複数分類法 プラグインを通して選択のための用語を示しています。

アップデート:

theDeadMedics以下の回答から、私は以下の行で何かできることがわかります。

<?php 
require_once 'wp-load.php';

global $wpdb; 

$expireds = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'sales' AND HOUR(TIMEDIFF(NOW(),  post_date_gmt)) >=4321
");

foreach ($expireds as $expired) {
wp_delete_post( $post->ID, true );
}
?>  

最後の更新
私が何人かの人々がこれをお気に入りとして設定しているのを見ます、以下は期限切れの投稿(そしてその投稿に関連するすべてのメタ)を削除する完全に機能するクエリです。 post_date_gmt.

以下のコードで、>=2は1時間経過した投稿の削除を示します。削除に設定したい時間数は常にプラス1にする必要があります。

<?php 
require_once 'wp-load.php';

global $wpdb; 

$expireds = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'sales' AND HOUR(TIMEDIFF(NOW(),  post_date_gmt)) >=1");

foreach ($expireds as $post) {
wp_delete_post( $post->ID, false );
}
?>

よろしく

2
MartinJJ

カスタムSQLクエリを使用する必要はありません。組み込みメソッドwp_delete_post()を使用してください。これはまた、すべての用語の関係をクリアします。

3
TheDeadMedic