web-dev-qa-db-fra.com

Rechercher et supprimer un code spécifique dans tous les messages

Question

Existe-t-il un moyen de supprimer un shortcode spécifique, par exemple [print_me], de tous les messages où il apparaît en une seule fois. Et je ne veux pas dire le masquer ou le filtrer afin qu'il n'apparaisse pas tant qu'il reste dans le post_content. Je le veux GONE GONE.

Des tentatives jusqu'ici ...

Jusqu'à présent, j'ai utilisé phpMyAdmin. J'ai lancé une requête sur tous les post_content qui apparaissent dans la table wp_posts. Elle contient tous les messages que je cherchais, mais il y en a trop à gérer individuellement. J'ai lancé une requête de recherche/remplacement de mise à jour sur les résultats en essayant de le remplacer par "" (rien) mais, alors que la requête s'est exécutée avec succès, le problème est que je ne vois pas les codes abrégés disparus. Je ne suis donc pas sûr d'avoir oublié quelque chose.

Voici la requête que j'ai utilisée pour les trouver:

SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%[print_me]%'

et je reçois 111 disques. Mais ensuite, en utilisant le même outil pour faire une recherche et remplacer, je reçois:

Votre requête SQL a été exécutée avec succès

UPDATE db1357924680.wp_posts SET post_content = REPLACE (post_content, '% [print_me]%', '%%') WHERE post_content LIKE '%% [print_me] %%' COLLATE utf8_bin

Mais quand vous vérifiez, ils sont tous toujours là. SO J'espère que quelqu'un connaît une façon meilleure ou appropriée de le faire et est disposé à partager. Si je suis sur la bonne voie, j'apprécierais alors de l'aide pour comprendre pourquoi cela ne fonctionne pas comme prévu. TIA.

Résolution (merci à @TheDeadMedic)

En utilisant les corrections apportées à ma requête SQL d'origine (comme suit et trouvé dans la réponse d'origine), cela a fonctionné parfaitement et j'ai accompli ce dont j'avais besoin, merci.

UPDATE db1357924680.wp_posts SET post_content = REPLACE (post_content, '[print_me]', '') WHERE post_content LIKE '% [print_me]%'


Histoire (tl/rl)

Cela faisait un moment que j'utilisais un plugin qui pouvait faire apparaître quelque chose sur CHAQUE publication et chaque page, ou vous pouviez choisir de ne mettre le shortcode que lorsque vous le jugiez approprié pour ce contenu.

Cependant, au bout de deux ans environ, j’ai renoncé à une solution plus globale qui offrait d’autres fonctionnalités que je souhaitais intégrer.

J'ai désactivé le plugin, mais je suis maintenant confronté au problème de l'impression de ces codes abrégés sous forme de texte ancien classique et c'est un problème que je dois résoudre.

Quelques informations sur l’environnement et le système: PHP/Linux/WP_4.5.1/SQL_5.1.73/PMA_4.1.14.8

3
GµårÐïåñ

Pour la solution permanente, votre requête SQL est légèrement en retrait - vous avez besoin de:

UPDATE db1357924680.wp_posts SET post_content = REPLACE( post_content, '[print_me]', '' ) WHERE post_content LIKE '%[print_me]%' 

MySQL remplace exemple

6
TheDeadMedic

Il y a un moyen plus facile de faire ceci:

add_filter( 'the_content', 'my_post_content_remove_shortcodes', 0 );

function my_post_content_remove_shortcodes( $content ) {

    /* Create an array of all the shortcode tags. */
    $shortcode_tags = array(
        'shortcode_1',
        'shortcode_2',
        'shortcode_3'
    );

    /* Loop through the shortcodes and remove them. */
    foreach ( $shortcode_tags as $shortcode_tag )
        remove_shortcode( $shortcode_tag );

    /* Return the post content. */
    return $content;
}

Vous pouvez déposer ceci dans votre fichier de fonctions.

Source: http://justintadlock.com/archives/2013/01/08/disallow-specific-shortcodes-in-post-content

--modifier--

Au lieu de rechercher dans vos entrées MySQL pour tout supprimer, vous pouvez "supprimer" la fonctionnalité du shortcode via votre fichier de fonctions.

Le code ci-dessous va filtrer tout votre contenu et supprimer les codes courts spécifiques que vous désignez à l'endroit marqué shortcode_1 etc.

Comme Mark l'a dit: Ce n'est pas tout à fait ce que vous avez demandé, mais vous obtiendrez des résultats similaires si vous avez du mal à trouver autre chose.

J'espère que ça aide!

5
Frits