web-dev-qa-db-fra.com

termes de taxonomie orphelins supprimer par requête SQL

J'ai 3 types de messages personnalisés, chacun de ces CPT ayant des messages qui sont définis pour une suppression automatique via une échelle de temps donnée par les tâches cron, le fait est que, lorsqu'elles sont supprimées, elles laissent derrière elles des termes de taxonomie orphelins dans des menus déroulants, etc., inutile de préciser quand ils sont cliqués il va à une erreur "quack quack oops 404", je peux trouver des requêtes SQL à exécuter pour les tags orphelins, mais il semble y avoir très peu (en fait je n'ai rien trouvé du tout) qui concerne les termes de taxonomie, anubody a des idées sur ce?

Plus d'infos
Tous mes termes sont préaffectés aux taxonomies et sont répertoriés dans le tableau wp_terms. Ils sont donc pré-assignés car leurs auteurs les choisissent dans les menus d'options lors de la création d'un nouveau poste. - termes utilisés) doivent encore rester dans la table wp_terms pour une inclusion ultérieure, les tables sur lesquelles je dois obtenir des informations pour exécuter la requête de suppression sont wp_terms_taxonomy, wp_terms_relationships et wp_posts pour rechercher une correspondance d'un identifiant de publication NULL et de la partie ce qui me stoppe.

Je montre les termes pour la sélection via le plugin Scribus Query Multiple Taxonomies .

UPDATE:

De theDeadMedics répondez ci-dessous en déduisant que je peux faire quelque chose sur les lignes de:

<?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 );
}
?>  

DERNIÈRE MISE À JOUR
Je vois que quelques personnes ont défini ce paramètre comme favori. Vous trouverez ci-dessous une requête complète qui supprimera les publications ayant expiré (et toutes les méta associées à cette publication) définie sur un "n" e nombre d'heures après. post_date_gmt.

Dans le code ci-dessous, >=2 indique les messages supprimés datant d'une heure, le nombre d'heures que vous souhaitez définir pour suppression doit toujours être de plus 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 );
}
?>

Cordialement

2
MartinJJ

Vous ne devriez pas avoir besoin d'utiliser une requête SQL personnalisée - tenez-vous-en à la méthode intégrée wp_delete_post(). Cela effacera également toutes les relations de terme.

3
TheDeadMedic