【问题标题】:Wordpress- how to disable plugin updateWordpress-如何禁用插件更新
【发布时间】:2013-07-27 15:35:32
【问题描述】:

我在 GPLv2 许可下找到了一个很棒的 WordPress 插件,并对源代码进行了很多更改,插件现在做了其他事情。 我修改了作者(带有原始插件作者的学分)、URL、版本号(从 xxx 1.5 到 YYY 1.0)。

一切都很好,但是当 WordPress 检查插件更新时,它会将我的插件 YYY 1.0 视为 xxx 1.0 并显示有关可用更新的通知。

我更改的插件 YYY 1.0 是通过从我的计算机而不是 WP 存储库复制文件来安装的。

我还有什么需要改变的?

【问题讨论】:

  • FWIW,重命名文件夹。这有时会产生奇迹与更新跟踪。

标签: wordpress plugins updating


【解决方案1】:

禁用插件更新

将此代码添加到您的插件根文件中。

add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
     unset($value->response[ plugin_basename(__FILE__) ]);
     return $value;
} 

【讨论】:

  • 这个方法只有在插件被激活时才会移除通知。仍然显示更新通知是插件已停用。
  • @aniskhan001 in function.php 添加上述代码并禁用特定插件,如unset($value->response["akismet/akismet.php"]);
  • 这是最好的解决方案,因为使用了平台挂钩。
  • 截至 2019 年,这是有效的正确答案。
  • 截至 2020 年 6 月,这仍然很棒!谢谢!
【解决方案2】:

将此代码放在主题functions.php 文件中。这对我有用,我正在使用它。这也是针对特定插件的。在这里您需要更改插件主文件 url 以匹配您的插件。

 function my_filter_plugin_updates( $value ) {
   if( isset( $value->response['facebook-comments-plugin/facebook-comments.php'] ) ) {        
      unset( $value->response['facebook-comments-plugin/facebook-comments.php'] );
    }
    return $value;
 }
 add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );

这里:

"facebook-cmets-plugin" => facebook cmets 插件文件夹名称

"facebook-cmets.php" => 插件主文件。这可能与 index.php 不同

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    最简单有效的方法是更改​​您不想更新的插件版本。 举个例子 如果我不想更新 wptouch,我打开它的定义文件,就像:

    /*
        Plugin Name: WPtouch Mobile Plugin
        Plugin URI: http://www.wptouch.com/
        Version: 4.0.4
    
    */
    

    这里在版本中将 4.0.4 更改为 9999 喜欢:

    /*
        Plugin Name: WPtouch Mobile Plugin
        Plugin URI: http://www.wptouch.com/
        Version: 9999
    
    */
    

    【讨论】:

    • 有时有效,但不幸的是,这并不总是有效。
    • 为什么有时灰色不起作用?也许对于自定义插件?对于存储库中的插件,它总是对我有用。
    • 这一直对我有用,直到今天使用付费 WooCommerce 插件:(
    【解决方案4】:

    在插件文件中,会有一个检查更新的函数。原作者可以将其命名为任何名称,因此您必须检查代码并检查每个函数及其作用。我想这个函数的作用会很明显。

    或者,您可以将其添加到您的插件文件中:

    add_filter( 'http_request_args', 'dm_prevent_update_check', 10, 2 );
    function dm_prevent_update_check( $r, $url ) {
        if ( 0 === strpos( $url, 'http://api.wordpress.org/plugins/update-check/' ) ) {
            $my_plugin = plugin_basename( __FILE__ );
            $plugins = unserialize( $r['body']['plugins'] );
            unset( $plugins->plugins[$my_plugin] );
            unset( $plugins->active[array_search( $my_plugin, $plugins->active )] );
            $r['body']['plugins'] = serialize( $plugins );
        }
        return $r;
    }
    

    致谢:http://developersmind.com/2010/06/12/preventing-wordpress-from-checking-for-updates-for-a-plugin/

    【讨论】:

    【解决方案5】:
    add_filter('site_transient_update_plugins', '__return_false');
    

    在function.php中添加以上代码并禁用所有插件更新

    【讨论】:

    • 太棒了!非常感谢。
    【解决方案6】:

    一个简单的解决方案是更改插件文件中的插件版本。 例如,如果插件版本是 1.2.1。你可以像下面这样(100.9.5 插件作者永远无法达到的东西)

    <?php
    /*
     * Plugin Name:       Your Plugin Name
     * Description:       Plugin description.
     * Version:           100.9.5 
    */
    

    【讨论】:

      【解决方案7】:

      这是 Mark Jaquith 脚本的更新版本:

      • WP 更新已切换到 HTTPS
      • 反序列化在我的共享主机上被阻止
      • 这里使用 json_decode 和 json_encode 代替
      • 信用:Block Plugin Update

      .

      add_filter( 'http_request_args', 'widget_disable_update', 10, 2 );
      
      function widget_disable_update( $r, $url ) {
          if ( 0 === strpos( $url, 'https://api.wordpress.org/plugins/update-check/' ) ) {
              $my_plugin = plugin_basename( __FILE__ );
              $plugins = json_decode( $r['body']['plugins'], true );
              unset( $plugins['plugins'][$my_plugin] );
              unset( $plugins['active'][array_search( $my_plugin, $plugins['active'] )] );
              $r['body']['plugins'] = json_encode( $plugins );
          }
          return $r;
      }
      

      【讨论】:

      • 现在是 2019 年,Block Plugin Update 插件仍然运行良好 :-)(只能手动安装,因为它似乎太旧了,无法在 WordPress 的插件仓库搜索中找到。)
      【解决方案8】:

      将此行添加到 wp-config.php 以禁用插件更新:

      define('DISALLOW_FILE_MODS',true);
      

      【讨论】:

        【解决方案9】:

        手动禁用插件更新:

        1. 打开 functions.php 文件(转到您激活的主题文件夹)
        2. 复制并粘贴以下代码:

        remove_action( 'load-update-core.php', 'wp_update_plugins' );

        add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );

        1. 保存更改,大功告成

        【讨论】:

          【解决方案10】:

          为了完整起见,这里还有一个插件旨在阻止选定其他插件的更新:

          https://github.com/daggerhart/lock-plugins

          有关其背景和功能模式的一些信息可以找到here(德语)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-08-06
            • 2012-02-28
            • 2013-10-25
            • 1970-01-01
            • 2016-12-25
            • 2015-12-08
            • 1970-01-01
            相关资源
            最近更新 更多