J'ai besoin de ton aide. J'essaie de supprimer en masse les pièces jointes d'un type d'article personnalisé ("livre") à l'aide d'une requête SQL. J'ai trouvé cet extrait sur le formulaire wordpress: Wordpress.org
Je l'ai testé sur mon ordinateur local et il a supprimé toutes les pièces jointes de ma médiathèque. Maintenant, j'aimerais avoir votre aide pour définir la requête de sorte qu'elle ne cible que les pièces jointes (image sélectionnée et vignette) de mon type de message personnalisé "livre".
Merci
Vous pouvez le faire avec des appels WordPress codex natifs comme celui-ci (source http://badlywired.com/technical-stuff/2014/11/10/code-to-delete-all-images-from-wordpress-or-nearly -tout/ )
<?php
/* create this code in a file in the main wordpress directory e.g. delmedia.php
and access it via mydomain.com/delmedia.php
*/
// Include the wp-load'er
include('wp-load.php');
$args= array(
'post_type' => 'book', // obvious
'posts_per_page' => -1 // get them all
);
// get all attachments post ids
$posts = get_posts( $args );
foreach ($posts as $post_id) {
// get an array of image data
$image_attributes = wp_get_attachment_image_src( $post_id->ID );
if (strpos($image_attributes[0], 'mystring') !== FALSE){
echo 'Image Found : '.$image_attributes[0];
if (false === wp_delete_attachment( wp_delete_attachment( $post_id->ID, true ) ) ) {
echo ' and delete failed!<br>';
} else {
echo ' and delete succeeded!<br>';
}
}
}
?>
Combinant deux méthodes ici:
$args = array(
'post_type' => 'attachment',
'numberposts' => null,
'post_status' => null,
'post_parent' => $post_id
);
$attachments = get_posts($args);
if ($attachments) {
DELETE FROM wp_postmeta
WHERE post_id IN
(
SELECT id
FROM wp_posts
WHERE (post_type = 'book')
)
;
}
};
puis:
DELETE FROM wp_posts WHERE (post_type = 'book')
Cela devrait vous donner des types de message qui sont des pièces jointes et des livres combinés ...