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

» 2014-04-15 WordPress 59条评论

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

zww
or
oooo

“WordPress自动更新造成无法进入后台 + 禁用后台自动更新”有59条评论

  1. 临沭人 says:

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

  2. 貌似很不错哦

  3. 牧风 says:

    :mrgreen: :mrgreen: 毫无压力

  4. 纽小二 says:

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

    1. zwwooooo says:

      @纽小二
      忙的时候更新出问题烦啊

  5. Yang says:

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

    1. zwwooooo says:

      @Yang
      没用啥缓存还是没啥问题的

  6. 郑永 says:

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

    1. zwwooooo says:

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

  7. 昵图网 says:

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

    1. zwwooooo says:

      @昵图网
      主机?是缓存

发表评论

昵称 *

网址

B em del U Link Code Quote