关闭单个插件的自动更新

时间:2011-08-09 作者:GavinR

我有一个插件,我知道我永远不想更新。我知道这不是最佳做法,但在这种情况下必须这样做。有没有办法阻止WordPress提示我自动更新某个插件(但对所有其他插件仍然像往常一样发出警报)。

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

T31os的答案是正确的:增加插件主文件中的版本号。。例99.9。。。并在自述文件中进行同样的更改,以便更好地衡量(尽管我认为这实际上不是必需的)–t31os

SO网友:Tara

您可以将其放置在主题的功能中。php

// Disable update notification for individual plugins - see my example of plugin block-spam-by-math-reloaded as to how to use this function

function filter_plugin_updates( $value ) {
    unset( $value->response[\'plugin-folder-name/plugin-file-name.php\'] );    
    return $value;
}

add_filter( \'site_transient_update_plugins\', \'filter_plugin_updates\' );

SO网友:emc

虽然Tara的答案很好,但它需要程序员输入主插件文件的路径,并且只有在启用特定主题时,它才起作用。另一种解决方案可能如下所示:

add_filter(\'site_transient_update_plugins\', \'remove_update_notification_1234\');
function remove_update_notification_1234($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
    return $value;
}
单线版本:

add_filter(\'site_transient_update_plugins\', function ($value) { unset($value->response[ plugin_basename(__FILE__) ]);return $value; });
将此代码放置在主.php 要禁用的插件的文件。如果计划在站点中多次使用此选项,请更改_1234 在过滤器和函数名中设置一组不同的随机数,以避免函数名重复。

如果您禁用某个插件的更新,很可能是因为您出于某种原因正在编辑它。。。因此,在插件中添加一些额外的行应该是可行的。

SO网友:thetrickster

当我使用这段代码安装或更新其他插件时,我收到了上面提到的“gurung”之类的PHP警告。我在WP 4.3.1中看到了PHP警告。

我在stackexchange上找到了其他一些关于这个问题的帖子,我提出了一个函数,它可以循环遍历插件引用数组,并首先检查是否已经有了对该插件的引用(如果没有引用,则避免在非对象上出现PHP警告),如果有对象,它会像原始代码一样将其取消设置。

我没有做过单元测试,但每次更新/安装插件时都会收到PHP警告,现在我看不到了。

function filter_plugin_updates( $value ) {

  // Add references to plugins you want to disable update notices for in the $plugins array
  $plugins = array(
    \'k-elements/setup.php\'
  );

  foreach( $plugins as $plugin ) {
    if ( isset( $value->response[$plugin] ) ) {
      unset( $value->response[$plugin] );
    }
  }

  return $value;

}
add_filter( \'site_transient_update_plugins\', \'filter_plugin_updates\' );

SO网友:anmari

或者只需重命名它,使其“不是”同一个插件
您不仅需要重命名文件夹,还需要重命名自述和插件标题中的文件夹。

SO网友:Phreditor

我继承了一个npc实现塔拉代码剪贴的站点,该站点根据古隆的评论抛出了错误。把我逼疯了。我对在插件中编辑代码犹豫不决,直到我意识到snipper是定制的。

要消除错误,请更改以下内容:

unset($value->response[ plugin_basename(__FILE__) ]);
对此:

if($value) {
    unset($value->response[ plugin_basename(__FILE__) ]);
}
这对一些人来说可能很明显,但关键是它已经是自定义的,因此您可以编辑它probably 不会被更新覆盖,因为关键是阻止你更新插件。

SO网友:nydame

只需重命名插件文件夹(或者,对于单个文件插件,重命名该PHP文件),即可防止更新。这是迄今为止最简单的解决方案。此外,这种方法使您更改的代码对未来的开发人员透明,包括“未来的您”。

SO网友:Patryk Padus

主插件文件中的更高版本是最好的,但只有在添加特殊的hack时。它调用一个空/未定义的数字,然后将保留在该版本中。示例:

版本:

这将确保在2100年,它不会在9.9.9或类似的版本之后更新。这是一种处理废弃插件的简单方法,这些插件有时会被替换掉。

结束