web-dev-qa-db-fra.com

Ajout en masse de balises (ou de types d'étiquettes) aux publications ayant un extrait personnalisé

La situation est la suivante:

Le blog a maintenant 2200+ messages. Au début (2007/2008), j'utilisais des extraits manuels dans lesquels je mettais une image et un peu de texte. L'extrait manuel (le champ extrait contenant une image et un texte) est affiché dans les archives et où vous le souhaitez.

Cependant, récemment, j'ai décidé de ne pas utiliser l'extrait manuel (champ de l'extrait contenant une image et du texte). Je suis passé à l'extrait automatique wordpress, j'ai limité le nombre de mots et récupéré la première image de l'article (s'il y en a) où je le souhaite. Beaucoup plus de flexibilité de cette façon. Afin de conserver l'uniformité du site, j'utilise la balise conditionnelle has_excerpt () pour ajuster ou appliquer les nouvelles règles CSS aux publications qui ont un extrait manuel. La balise conditionnelle vérifie si la publication utilise le champ extrait (avec extrait manuel).

Maintenant, je veux supprimer tous les extraits manuels (champ extrait contenant une image et un texte) et en même temps étiqueter ces publications (en ajoutant une balise par exemple) afin de pouvoir continuer à appliquer les règles CSS conditionnelles pour ces publications. Par exemple, utilisez has_tag () .

Je souhaite le faire car ces articles ont des images légèrement différentes de celles des autres articles et je dois leur appliquer des règles CSS légèrement différentes.

Maintenant, puisqu'il y a des milliers de messages, il serait insensé de les parcourir manuellement. Je suis sûr qu'il existe un moyen simple de le faire via quelques commandes SQl.

  1. Ajoutez une balise (ou toute autre étiquette que vous jugeriez préférable) à tous les messages contenant des extraits manuels (champ extrait contenant une image et un texte).
  2. Supprimez le contenu du champ extrait de toutes les publications.
2
Vila

Certaines questions sont facilement résolues en cherchant dans cette pile et en joignant des réponses.

Le plugin suivant exécutera le code de conversion lorsqu'il sera activé. Ajustez le tableau $tags et n'oubliez pas de sauvegarder votre base de données avant de continuer.

<?php
/* Plugin Name: Remove Excerpts, Add Tags */

register_activation_hook( __FILE__, 'wpse_56133_add_tags_remove_excerpts' );    

function wpse_56133_add_tags_remove_excerpts() {
    $tags = array( 'YOUR TAG NAME A HERE', 'YOUR TAG NAME B HERE' );

    $args = array( 'post_type' => 'post', 'numberposts' => -1, 'post_status' => published );
    $posts = get_posts( $args );
    foreach ( $posts as $post )
    {
        $po = array();
        $po = get_post( $post->ID,'ARRAY_A' );
        $po['post_excerpt'] = "";
        wp_update_post( $po );

        //set last value to false if you want to replace existing tags.
        wp_set_post_terms( intval( $post->ID ), $tags, 'post_tag', true ); 
    }
}
2
brasofilo