web-dev-qa-db-fra.com

Sur la désactivation du plugin cacher son shortcode

J'ai créé un plugin personnalisé et je voulais cacher son shortcode [related] au contenu une fois le plugin désactivé. Tout fonctionne bien, mais quand je désactive le plugin, le shortcode errant est toujours là. et je ne veux installer aucun autre plugin pour cacher ça.

register_deactivation_hook( __FILE__ , array($relatedPost, 'deactivated'));
class RelatedPost {

function deactivated(){
    // flush rewrite rules
    flush_rewrite_rules();
}
}
3
Awsme Sandy

J'ai bien peur de cacher le shortcode une fois le plugin désactivé, ce n'est tout simplement pas possible.

La seule façon de "masquer" un shortcode du contenu est de l'enregistrer avec un calback qui ne renvoie rien, comme dans:

add_shortcode( 'related', function(){ return null; } );

Mais bien sûr, vous ne pouvez pas le faire sans un plugin actif.

Techniquement, vous pourriez effacer chaque occurrence du shortcode en extrayant et en modifiant tout le contenu susceptible de le contenir - mais ce serait probablement une très mauvaise idée et cela ne permettrait pas de les récupérer au cas le plugin est réactivé.

3
Iceable

Le code suivant encapsulera [related] dans des balises de commentaire HTML telles que <!-- [related] --> lors de la désactivation du plug-in.

<?php
// on plugin activation
register_activation_hook( __FILE__, 'my_hide_shortcut' );

function my_hide_shortcut()
{
    $to_find = '[related]';
    $to_replace_with ='<!-- [related] -->';

    // get MySQL table prefix
    global $wpdb;
    $table_prefix = $wpdb->prefix;

    // run MySQL query
    $mysql = "UPDATE '{$table_prefix}_posts' SET 'post_content' = replace('post_content', '{$to_find}', '{$to_replace_with}')";
}

Vous pouvez aller plus loin et remplacer le plugin lorsque le plugin est réactivé, ou supprimer complètement le shortcode lors de la désinstallation du plugin.

Ce code n'a pas été testé et a été posté ici uniquement pour suggérer une idée! Effectuez la sauvegarde de la base de données avant d'essayer. Vérifiez la syntaxe de la variable $mysql. Vous voudrez peut-être aussi faire des choses sur MySQL avec WordPress.

0
Max Yudin