web-dev-qa-db-fra.com

Supprimer tous les messages méta sauf l'image sélectionnée

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?

1
IXN

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

1
Kvvaradha