web-dev-qa-db-fra.com

Comment désactiver la notification de mise à jour de plugin pour un plugin spécifique dans Multisite

Comment il est possible de désactiver le contrôle de mise à jour du plugin et la notification pour un plugin personnalisé spécifique dans WP Multisite.

Je pense que c'est aussi important, le plugin est utilisable comme activation unique dans chaque blog du réseau et aussi comme plugin actif à l'échelle du réseau. La vérification est différente lors d’une activation sur un seul blog dans le réseau de WP mu.

Contexte: J'écris de nombreux plugins pour les clients et dans tous les plugins, je désactive la vérification et la notification avec la solution suivante (c'est aussi la même chose que celle-ci question n ° 20580 ). Mais cela ne fonctionne que sur une seule installation de WordPress, pas sur une installation multisite. Le filtre ne fonctionne que sur un blog du réseau.

Si vous êtes dans le backend du réseau, alors relancez la vérification de tous les plugins, ainsi que du plugin dont provient cette source.

Peut-être que d'autres personnes ont la même exigence ou/et une solution, merci.

add_filter( 'site_transient_update_plugins', array( $this, 'remove_update_nag' ) );
/**
 * Disable plugin update notifications
 * 
 * @param  array string $value
 * @since  1.2.3
 * @link   http://dd32.id.au/2011/03/01/disable-plugin-update-notification-for-a-specific-plugin-in-wordpress-3-1/       
 * @retrun array string $value
 */
public function remove_update_nag( $value ) {

    if ( isset( $value ) && is_object( $value ) )
        unset( $value->response[plugin_basename(__FILE__)] );

    return $value;
}
4
bueltge

J'ai trouvé une solution pour moi. Créer un plugin, actif dans le réseau - réseau entier. Ceci est important sur une installation mu. Si la vérification uniquement dans un plug-in est active dans le blog d'une installation mu, la vérification était-elle uniquement active dans ce blog et la vérification de la mise à jour et la notification étaient actives dans le réseau.

Définissez les plugins, vous ne vérifierez pas les mises à jour dans le tableau de var $blocked_plugins.

<?php
/**
 * Plugin Name: Plugin updates blocker
 * Plugin URI:  
 * Description: Disable plugin update check for specific plugins list
 * Version:     1.0.0
 * Author:      Frank Bültge
 * Author URI:  http://bueltge.de
 * License:     GPLv3
 */

! defined( 'ABSPATH' ) and exit;

add_filter( 'http_request_args', 'fb_block_update_specific_plugins', 5, 2 );
function fb_block_update_specific_plugins( $r, $url ) {

    //var_dump( unserialize( $r['body']['plugins'] ) );

    if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
        return $r;

    // array for the plugin slug - folder/file
    $blocked_plugins = array(
        'oembed-Gist.php', // plugin without folder
        'subtitle/class-post_subtitle.php',
        'wp-slabText/wp-slabtext.php',
    );
    if ( 0 === (int) count( $blocked_plugins ) )
        return $r;

    $installed_plugins = unserialize( $r['body']['plugins'] );
    foreach( $blocked_plugins as $p ) {
        unset( $installed_plugins->plugins[ $p ] );
        unset( $installed_plugins->active[ array_key_exists( $p, $installed_plugins ) ] );
    }
    $r['body']['plugins'] = serialize( $installed_plugins );

    return $r;
}
2
bueltge

utilisez le code ci-dessous dans votre functions.php

function jm_update_notice()
{
remove_action( 'load-update-core.php', 'wp_update_plugins' );
}
add_filter( 'pre_site_transient_update_plugins', '__return_null' ); 
1
Varun Sridharan

Encore plus facile: ouvrez le répertoire du plugin spécifique; trouver le fichier php dans lequel la version du plugin est mentionnée; changer le numéro de version en un nombre élevé (c'est-à-dire de la version 1.1 à la version 100.1)

0
PHdJ