如何在多站点中禁用特定插件的插件更新通知

时间:2012-07-31 作者:bueltge

如何能够disable plugin update check and notification 对于自定义specific plugin 在WP中Multisite.

我认为这也很重要,该插件可以在网络的每个博客中单独激活,也可以作为网络范围内的活动插件。WP mu网络中单个博客的激活检查是不同的。

背景:我为客户编写了许多插件,在所有插件中,我使用以下解决方案停用了检查和通知(其als或与此相同question no 20580). 但这只适用于WordPress的单个安装,而不适用于多站点安装。该过滤器仅在网络内的博客中起作用。

如果你在网络后端,那么再次运行关于所有插件的检查,也检查这个源的插件。

也许其他人也有同样的要求或/和解决方案,谢谢。

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;
}

3 个回复
最合适的回答,由SO网友:bueltge 整理而成

我找到了一个解决办法。创建一个插件,在网络范围内激活。这对于mu安装非常重要。如果检查只在插件中进行,那么mu安装的博客中有活动的,那么检查只在该博客中进行,更新检查和通知在网络中进行。

定义插件,您将不会在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;
}

SO网友:PHdJ

更简单的方法是:打开特定的插件目录;找到提到插件版本的php文件;将版本号更改为高位(即版本1.1到版本100.1)

SO网友:Varun Sridharan

在函数中使用以下代码。php

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

结束

相关推荐

Updates for a private plugin?

如果我写一个私有插件,有没有办法使用WordPress自动更新机制来更新它 我想封装这个功能,但它是我自己的5个博客特有的,所以它不是公共插件资源的好候选。但我喜欢这种简单的更新机制 有没有办法做到这一点