Si je renomme un plugin (dans son fichier php principal), est-ce que je reçois toujours des notifications de mise à jour?

17

J'ai récemment été contraint d'éditer les fichiers principaux d'un plugin. J'ai mis à jour le titre dudit plugin pour indiquer qu'il a été modifié.

Ma question est: le plugin recevra-t-il toujours des notifications de mise à jour? Si c'est le cas, je désactiverai probablement les mises à jour de ce plugin, pour éviter que quelqu'un oublie mes mises à jour et écrase.

Idéalement, je voudrais voir si le plugin obtient des mises à jour, mais ne pas leur permettre de se produire simplement en cliquant sur mise à jour. (il faudrait le désinstaller et le réinstaller, ou similaire).

Zach Lysobey
la source
À propos de ce problème, j'ai récemment publié un rapport de bogue sur WordPress Track: sauvegarde d'un répertoire de plugins / thèmes. Je pense qu'une simple sauvegarde automatique à l'intérieur mais avant la fonction de mise à jour automatique rendrait les choses beaucoup plus faciles pour tout le monde. Je ne vois aucune raison pour laquelle cela n'a pas été fait lors de la première mise à jour automatique, ni pourquoi cela n'a pas été fait entre-temps, ni pourquoi cela ne devrait pas être fait.
Ando

Réponses:

17

Comme le disent SickHippie et AFAIK, vous ne pouvez pas avoir les deux. J'ajoute une réponse avec les informations que j'ai collectées dans cette pile.


Désactiver la notification de mise à jour pour les plugins individuels

Bainternet dans un commentaire:

Ouvrez simplement le fichier du plugin et changez le numéro de version en quelque chose comme 9.9.9

Réponse de Hameedullah Khan (suppression de l'avis de mise à jour d'Akismet):

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Ce qui déclenche une alerte de mise à jour de plugin

Réponse d'Otto:

L'API utilise un mécanisme plutôt élaboré pour faire correspondre les plugins aux plugins qu'elle connaît, mais ce sont les principales choses vérifiées: URI du plugin, nom du plugin et slug du plugin (le nom du répertoire dans lequel se trouve le plugin)

Modifiez l'un de ceux-ci et vous réduisez les chances qu'il trouve une correspondance, mais il pourrait toujours l'obtenir si deux d'entre eux correspondent, par exemple.

Les informations du fichier readme.txt ne sont pas utilisées pour cela. L'en-tête du fichier PHP du plugin lui-même est utilisé.


Approche alternative 1


Approche alternative 2 tirée des commentaires

  • changer le nom du plugin, le numéro de version et le nom du répertoire
  • installez le plugin d'origine mais laissez-le désactivé pour recevoir des notifications de mise à jour
  • ajouter un message personnalisé à la description du plugin (ou remplacer l'original)
  • supprimer les actions du plugin (Activer | Modifier | Supprimer) et la case à cocher pour les actions en bloc

entrez la description de l'image ici

add_filter( 'all_plugins', 'wpse_56968_on_list_plugins' );
add_filter( 'plugin_action_links_akismet/akismet.php', 'wpse_56968_remove_plugin_actions', 10, 4 );
add_action( 'admin_head-plugins.php', 'wpse_56968_remove_plugin_checkbox' );

function wpse_56968_on_list_plugins( $plugins )
{
    $plugins['akismet/akismet.php']['Description'] = '<strong>*** NOTICE: PLUGIN ONLY TO CHECK UPDATES IN THE ORIGINAL ONE! ***</strong> ';// . $plugins['akismet/akismet.php']['Description'];
    return $plugins;
}

function wpse_56968_remove_plugin_actions( $actions, $plugin_file, $plugin_data, $context ) 
{
    unset( $actions['activate'], $actions['edit'], $actions['delete'] );
    return $actions; 
}

function wpse_56968_remove_plugin_checkbox()
{
    ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) {
                $('tr#akismet th.check-column').html('&nbsp;')
            });     
        </script>
    <?php
}

Billets Core associés

brasofilo
la source
Réponse géniale! Je vais peut-être changer le nom du plug-in, le numéro de version et le nom du répertoire, puis installer le plug-in d'origine mais le laisser désactivé pour que je puisse voir quand il sera mis à jour.
Zach Lysobey
1
@ZachL - Brillant! Cela devrait très bien fonctionner!
SickHippie
2
Vous pouvez également modifier l'en-tête du plugin d'origine Descriptionet ajouter quelques remarques, comme:Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
brasofilo
1
@ZachL - Ajout d'une seconde alternative complète basée sur ces commentaires :)
brasofilo
3

Vous ne pouvez pas désactiver les mises à jour mais pas les notifications de mise à jour - elles sont liées.

Pour désactiver complètement les notifications, modifiez le nom du dossier dans lequel se trouve le plug-in.

Ma méthode personnelle consiste à ajouter 3 a au titre du plugin dans le plugin.phpfichier principal , donc dans ma liste de plugins, je vois AAA/Plugin Name. Cela le place en haut de la liste pour référence, et apparaîtra dans la liste des plugins et dans la liste de mise à jour. C'est fondamentalement un indicateur personnel, donc je sais qu'il ne faut pas mettre à jour automatiquement ces plugins spécifiques.

SickHippie
la source
Merci pour la réponse. Juste pour clarifier, dites-vous que renommer un plugin N'arrête PAS ses notifications de mise à jour?
Zach Lysobey
Quant à votre première phrase ... Je suis sûr que je pourrais trouver un moyen d'obtenir cet effet, peut-être avec quelques js sournois pour simplement supprimer le lien de la notification.
Zach Lysobey
AFAIK, renommer le fichier principal ou le titre d'un plugin dans ce fichier principal n'arrête pas les notifications de mise à jour. Je suis assez sûr que le plugin Repository est basé sur le nom du dossier (le zip téléchargé depuis le Repo devrait avoir le même nom plus le numéro de version). Pour la désactivation de la mise à jour, il y a la liste des plugins et la liste des mises à jour, alors assurez-vous que votre JS se déclenche aux deux endroits (également, partagez ce JS - pourrait être utile).
SickHippie