Mon but est de nettoyer les entrées de ma base de données. J'ai fait une migration de blogger qui a ajouté beaucoup de post_meta inutiles. J'ai trouvé un plugin (db reset) qui a la possibilité de réinitialiser/supprimer toutes les méta post. Cependant, si je supprime toutes les méta-publications, je perds les paramètres de mon image sélectionnée (miniatures).
Je ne connais pas très bien phpmyadmin. Comment puis-je supprimer toutes les publications méta sauf l'image sélectionnée?
Le code ci-dessous vous aidera à supprimer toutes les méta de la publication, à l'exception de la vignette d'une publication.
function kv_delete_all_meta_except_featuredimg(){
$args = array( 'posts_per_page' => -1, 'post_status' => 'any', 'post_type' => array('attachment', 'page','post'));
$articles= get_posts( $args );
foreach($articles as $article){
if($article->post_type == 'attachment'){
$myvals = get_post_meta($article->ID);
foreach($myvals as $key=>$val) {
if($key == '_wp_attached_file' || $key == '_wp_attachment_metadata'){} else {
delete_post_meta($article->ID, $key);
}
}
}else {
$myvals = get_post_meta($article->ID);
foreach($myvals as $key=>$val) {
if($key != '_thumbnail_id' ){
delete_post_meta($article->ID, $key);
}
}
}
}
}
add_action('init','kv_delete_all_meta_except_featuredimg');
Note : *** Rappelez-vous Ceci supprimera toutes les clés méta postales et leurs valeurs associées. Alors, faites une sauvegarde avant de continuer. Ajoutez simplement cette fonction sur votre thème functions.php
. Ici, j'ai supposé que vous ne pouviez avoir que ces types de post attachment, post, page
. si vous avez des types de messages supplémentaires, ajoutez-les.
Vous pouvez lire ici pour plus de détails, j'ai écrit un article à ce sujet. Kvcodes