Blog

WordPress自动更新造成无法进入后台 + 禁用后台自动更新

WordPress 3.7 以来就有了“后台自动更新”的功能,我的博客很奇怪,一直手动更新到 3.8.1 后这个功能才起效。

然后 3.8.2 和 3.8.3 都是 WordPress 自动升级的,而且我也收到后台发给我的邮件通知。

今早我收到 3.8.3 的通知后,顺便去后台看看评论,没想到登录时老是提示“您的WordPress数据库已经是最新的了!”,如下图

140415-wordpress-auto-update-error

点“继续”按钮直接跳回首页,不管我怎么刷新也没用。

想了下,以前手动也遇到过,一般都是缓存插件造成的,我的博客有安装 db-cache-reloaded-fix 这个数据库缓存插件,于是连上ftp:
1. 把此插件文件夹改名
2. 此插件在 wp-content 目录下生成的 db.php 和 db-config.ini 改名
解决!

恢复 db-cache-reloaded-fix 插件方法:
1. 访问一下 wp 后台的插件列表(会提示 db-cache-reloaded-fix 被更改之类的错误提示)
2. 把刚才改名的文件/文件夹改回来
3. 删除 db-cache-reloaded-fix 目录下的 cache 文件夹所有缓存文件(wp-content/plugins/db-cache-reloaded-fix/cache)
4. 刷新下 wp 后台的插件列表,重新激活 db-cache-reloaded-fix

未尝试的简单解决方法:不用改名什么的,直接删除 db-cache-reloaded-fix 目录下的 cache 文件夹所有缓存文件(同样遇到此情况的朋友可以先试试此方法)。

如果安装的是其他缓存插件(如 widget-cache,object-cache,wp-super-cache,wp-widget-cache等),以此类推解决。

----

我以前就说过“如果用了缓存插件,最好清空缓存并停止缓存插件再升级”,这次 WordPress 自动更新没考虑到用缓存的后果,虽然每次小更新缓存插件不一定就会“捣乱”。

既然跟缓存插件有兼容性问题,那么就要禁用“后台自动更新”,去 WordPress 官方扫了下,大方法有2种
1. wp-config.php 文件中定义常量
2. 过滤器(filters)来处理。(我个人比较喜欢这个方式)

关闭所有自动更新

方法1. 在 wp-config.php 添加如下常量:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

方法2. 使用下面的 filter:(放到主题的 functions.php 里面,下同)

add_filter( 'automatic_updater_disabled', '__return_true' );

顺便说下具体的吧,WordPress 后台自动更新功能有以下四种类型的更新:

  • 核心文件更新(分3个模式)
    • 核心开发更新模式:就是所说的“bleeding edge”,这个模式下是和开发版本同步的。如果你是 WordPress 极度爱好和尝鲜者可以尝试。
    • 小版本核心更新模式:一般是安全和维护版本发布,比如 3.8 更新到 3.8.1。
    • 大版本核心更新模式:比如,3.8 更新 3.9。
  • 插件更新
  • 主题更新
  • 翻译文件更新

核心更新

方法1. wp-config.php 文件中定义常量 WP_AUTO_UPDATE_CORE 下面三种值来设置不同更新模式:

  • true – 开发版、小更新、大更新都会自动更新。
  • false – 开发版、小更新、大更新都不会自动更新。
  • minor – 只有小版本更新才会自动更新。

方法2. 过滤器(Filters):allow_dev_auto_core_updates, allow_minor_auto_core_updates, 以及 allow_major_auto_core_updates

这里有两个 WordPress 内置的函数用来设置开启和关闭:__return_true 和 __return_false,例如:

开启开发更新模式与开发版本同步:

add_filter( 'allow_dev_auto_core_updates', '__return_true' );

关闭小版本更新:

add_filter( 'allow_minor_auto_core_updates', '__return_false' );

开启大版本更新:

add_filter( 'allow_major_auto_core_updates', '__return_true' );

插件和主题更新

插件和主题自动更新默认是关闭的,可以通过 auto_update_$type 这个 filter 来开启它们,其中 $type 是 “plugin” 或者 “theme”。
开启插件自动更新:

add_filter( 'auto_update_plugin', '__return_true' );

开启主题自动更新:

add_filter( 'auto_update_theme', '__return_true' );

翻译更新

翻译更新默认是开启的,如要关闭,这样:

add_filter( 'auto_update_translation', '__return_false' );

通常太自动的东西还是比较容易遇到问题,Orz

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/wordpress-auto-upgrade-caused-inaccessible-backstage-and-disable-automatic-updating.z-turn

59 comments

  1. 空空裤兜 空空裤兜 Google Chrome 34 Google Chrome 34 Windows 7 Windows 7

    看了文章,进自己的后台,发现已然中招

    21楼
  2. cangzhang cangzhang Google Chrome 34 Google Chrome 34 Windows 8.1 Windows 8.1

    不用WP了....

    22楼
  3. 哇168 哇168 Firefox 28 Firefox 28 Windows XP Windows XP

    占时还没碰到过,不过可以先学习 :mrgreen:

    23楼
  4. ......
  5. 临沭人 临沭人 Google Chrome 34 Google Chrome 34 Windows XP Windows XP

    自动升级了一次,就关闭了

    21楼
  6. 心理软件 心理软件 Firefox 28 Firefox 28 Windows XP Windows XP

    貌似很不错哦

    22楼
  7. 牧风 牧风 Google Chrome 34 Google Chrome 34 GNU/Linux GNU/Linux

    :mrgreen: :mrgreen: 毫无压力

    23楼
  8. 纽小二 纽小二 Google Chrome 34 Google Chrome 34 Windows 7 Windows 7

    有时能自动更,有时不能,管他的,反正自己是更新强迫症患者。没药医了

    24楼
  9. Yang Yang Google Chrome 34 Google Chrome 34 Windows 7 Windows 7

    :eek: 我也是3.8之后,才变得自动更新小版本。
    用了这几年,习惯了很多,就让它自由一次吧,嘿嘿

    25楼
  10. 郑永 郑永 Firefox 28 Firefox 28 Windows XP Windows XP

    查看最近评论有点问题,检查一下,侧边滚动也有点问题。

    26楼
    • zwwooooo zwwooooo Firefox 28 Firefox 28 Windows 8.1 Windows 8.1

      @郑永
      请问有什么问题?我怎么都重现不了你说的问题……要不你发现问题时用“隐私模式”访问下,看看是不是浏览器缓存导致。

  11. 昵图网 昵图网 Google Chrome 34 Google Chrome 34 Windows XP Windows XP

    应该是主机设置问题?最近WP升级较频繁。 :!:

    27楼

Leave a Reply