web-dev-qa-db-fra.com

Comment se débarrasser une fois pour toutes des codes abrégés dans le contenu de la publication

J'ai changé de thème/plugin maintenant le contenu de la publication affiche toujours des codes courts.

Il y a quelques astuces pour les cacher, mais chaque fois que j'utilise des fonctions de contenu, les codes abrégés réapparaissent. De plus, mes shortcodes sont le "type étendu" tels que [theshortcode id="34877"], [theshort size="large" "tiny"] etc., de sorte que les astuces pour les supprimer de la base de données ne fonctionnent pas du tout.

1
Diana

Veuillez sauvegarder votre base de données avant d'essayer

Dans votre thème actuel, ouvrez le fichier functions.php et ajoutez le code ci-dessous. Dans theshortcodeyouhate, indiquez le shortcode dont vous souhaitez vous débarrasser, notez que même les types étendus fonctionnent bien!

Une fois que vous avez ajouté ce code, appuyez sur F5 et vous avez terminé.

add_action ('init','remove_shortcode_from_db'); //you can choose any other actions such wp_head etc

function remove_shortcode_from_db($shortcode = 'theshortcodeyouhate') {

global $wpdb;

$posts = $wpdb->get_results("SELECT ID,post_title,post_content FROM
$wpdb->posts");
$regex =
'/\[(\[?)('.$shortcode.')\b([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([
^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)/s';

foreach($posts as $post) {
    $final = preg_replace($regex,'',$post->post_content);
    $change = $wpdb->update( $wpdb->posts, array('post_content' =>
$final), array('ID' => $post->ID));
}
}

Merci à la liste de diffusion wp-hackers

1
Diana