有没有办法禁用核心和插件更新?我正在修改一个插件和一点WordPress Core (我知道这样做是一种罪恶),但情不自禁。
如何禁用核心和插件更新
是的,你可以做到…
define( \'DISALLOW_FILE_MODS\', true );
将此片段放入wp-config.php
文件,您将能够禁用核心和插件更新。同时禁用插件更新应该非常简单:
<?php
defined( \'ABSPATH\' ) or exit;
/* Plugin Name: (#120589) Disable Plugin Updates */
remove_action( \'load-update-core.php\', \'wp_update_plugins\' );
拒绝(或重新路由)主题/插件更新可通过以下方式停用单核和主题更新this script 我的Mark Jaquith:对于某些主题文件中的插件
// Plugins
add_filter( \'http_request_args\', \'cws_hidden_plugin_12345\', 5, 2 );
function cws_hidden_plugin_12345( $r, $url )
{
if ( 0 !== strpos( $url, \'http://api.wordpress.org/plugins/update-check\' ) )
return $r;
$plugins = unserialize( $r[\'body\'][\'plugins\'] );
unset(
$plugins->plugins[ plugin_basename( __FILE__ ) ],
$plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
);
$r[\'body\'][\'plugins\'] = serialize( $plugins );
return $r;
}
对于主题中的主题functions.php
文件// Themes
add_filter( \'http_request_args\', \'cws_hidden_theme_12345\', 5, 2 );
function cws_hidden_theme_12345( $r, $url )
{
if ( 0 !== strpos( $url, \'http://api.wordpress.org/themes/update-check\' ) )
return $r;
$themes = unserialize( $r[\'body\'][\'themes\'] );
unset(
$themes[ get_option( \'template\' ) ],
$themes[ get_option( \'stylesheet\' ) ]
);
$r[\'body\'][\'themes\'] = serialize( $themes );
return $r;
}
禁用任何自定义插件中的特定插件,如下所述in this answer here on the stack:<?php
defined( \'ABSPATH\' ) or exit;
/* Plugin Name: (#120589) Disable Aksimet Updates */
add_filter( \'site_transient_update_plugins\', \'wpse120589DisableAkismetUpdates\' );
function filter_plugin_updates( $value )
{
unset( $value->response[\'akismet/akismet.php\'] );
return $value;
}
核心更新实际上应该很简单:<?php
defined( \'ABSPATH\' ) or exit;
/* Plugin Name: (#120589) Disable Core Updates */
add_filter( \'pre_site_transient_update_core\', \'__return_null\' );
对于旧版本John Billion has written a complete plugin 这是针对他们所有人的。自动更新的进一步信息和细粒度控制put up a post on WordPress/Make 关于该主题的详细信息:
版本控制是一个关闭开关:
如果WordPress检测到版本控制系统,它会识别您知道自己在做什么,并避免任何类型的自动更新。它寻找Subversion、Git、Mercurial和Bazaar,而且到处都是。
它通过搜索两个目录(ABSPATH和您正在更新的任何目录,如WP_PLUGINS_DIR
, 或WP_LANG_DIR
) 对于VCS目录(.svn
, .git
, .hg
, .bz
). 而且它看起来也更高一级,并且一直在寻找,直到它到达驱动器的根。因此,如果您在运行单个Subversion签出/
或/var/www/
或/var/www/mysite.com/
, WordPress安装在/var/www/mysite.com/public_html/wordpress/
将被阻止接收更新。显然,这在谨慎的地方是错误的。
禁用文件和主题编辑器也是如此:
这个DISALLOW_FILE_MODS
常量会阻止任何类型的文件系统更改,不仅仅是后台更新,所有用户也会这样做。因此,文件编辑器已不复存在;更新核心、主题或插件的能力;以及安装新主题或插件的能力。
仅有一个的wp-config.php
交换机:
define( \'AUTOMATIC_UPDATER_DISABLED\', (bool) true/false );
以及# Disables all core updates:
define( \'WP_AUTO_UPDATE_CORE\', false );
# Enables all core updates, including minor and major:
define( \'WP_AUTO_UPDATE_CORE\', true );
# Enables core updates for minor releases (default):
define( \'WP_AUTO_UPDATE_CORE\', \'minor\' );
有关链接帖子的更多详细信息。注意:以上所有代码都是在5分钟的google搜索过程中删掉的,因此没有进行测试,只是在视觉上与GitHub WordPress源代码和GitHub搜索结果有所不同/测试。您必须自己验证内容。此外,为了将来,请在您的问题中包含此类研究。
简单,不要修改核心。。。。。。修改核心基本上就是分叉wordpress,除非你是开发团队的一员,可以长期维护分叉,否则你会让你的客户陷入死胡同,唯一的升级途径就是重新开发站点。他可能同意,但这需要事先达成一致。
无论如何,在您的情况下,禁用自动更新是不够的,您还需要从仪表板中删除所有升级通知,或者最好确保cient没有对服务器的FTP访问权限。
同样的逻辑也适用于来自可靠来源(例如jetpack)的非平凡插件,但在这种情况下,您可能能够长期维护fork。
要禁用插件更新并阻止任何人尝试手动升级,只需更改插件的名称和目录即可。当然,您应该使用其他插件未使用的插件名称和目录名称,例如"${original plugin name} tailored for $client DON"T UPGRADE"
作为新插件名称和${original plugin name}-for-$client
作为新目录。