56

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

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

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

我还需要改变什么?

4

10 回答 10

63

禁用插件更新

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

add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
     unset($value->response[ plugin_basename(__FILE__) ]);
     return $value;
} 
于 2014-11-22T06:30:18.043 回答
39

将此代码放在主题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-comments-plugin" => facebook 评论插件文件夹名称

“facebook-comments.php” => 插件主文件。这可能与 index.php 不同

希望这会有所帮助。

于 2014-05-20T20:19:05.570 回答
30

最简单有效的方法是更改​​您不想更新的插件版本。例如,如果我不想更新 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

*/
于 2016-04-27T11:40:15.870 回答
23

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

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

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/

于 2013-07-29T12:15:09.490 回答
13
add_filter('site_transient_update_plugins', '__return_false');

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

于 2016-05-10T08:53:44.167 回答
5

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

<?php
/*
 * Plugin Name:       Your Plugin Name
 * Description:       Plugin description.
 * Version:           100.9.5 
*/
于 2020-06-21T16:26:03.853 回答
3

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

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

.

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;
}
于 2016-08-30T00:49:30.987 回答
1

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

define('DISALLOW_FILE_MODS',true);
于 2019-01-27T12:20:59.093 回答
0

手动禁用插件更新:

  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. 保存更改,您就完成了
于 2018-09-18T18:59:08.633 回答
0

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

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

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

于 2019-06-21T21:51:45.700 回答