Supprimer toutes les images à la une en 1 ligne de code : Posez-moi la question n°2

Supprimer toutes les images à  la une en 1 ligne de code : Posez-moi la question n°2

Question

@YoungiPhone a posé la question suivante sur le hashtag #WPHelp :

Réponse

à ça je n’ai qu’une seule ligne à répondre :

delete_metadata( 'post', false, '_thumbnail_id', '', true );

Cette ligne vient se mettre dans le fichier functions.php de votre thème enfant ou dans un mu-plugin. Si vous ne savez pas décider, lisez ceci.

Explications

La fonction delete_metadata() permets de supprimer tout type de données meta, habituellement vous utilisez surement delete_user_meta() ou delete_post_meta() etc

Ces fonctions sont justement utiliser delete_metadata(). Ce qui nous interesse c’est son dernier paramètre $delete_all qui nous permets d’éviter de lui passer un ID (celui d’un user ou d’un post par exemple).

Ce paramètre magique permets de TOUT supprimer ! J’ai donc utilisé le type de meta post et utilisé la clé _thumbnail_id qui est la meta donnée contenant l’ID de l’image à la une en question.

Bonus

Si vous aviez voulu simplement les désactiver afin de les récupérer par la suite, il aurait plutôt fallu faire ça :

global $wpdb;

$wpdb->update( $wpdb->postmeta, array( 'meta_key'=>'_temp_thumbnail_id' ), array( 'meta_key'=>'_thumbnail_id' ) );

Ce code va remplacer le nom de la clé de ma donnée meta, ce qui va « désactiver » l’image à la une.

Pour la récupérer, faites :

delete_metadata( 'post', false, '_thumbnail_id', '', true );


global $wpdb;
$wpdb->update( $wpdb->postmeta, array( 'meta_key'=>'_thumbnail_id' ), array( 'meta_key'=>'_temp_thumbnail_id' ) );

Voilà , on supprime d’abord celles qui vous auriez remises en place, puis on refait l’update à l’envers !

Utile non ?

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum