有没有办法强制WordPress在安装时覆盖插件文件?

rkue9o1l  于 2022-12-03  发布在  WordPress
关注(0)|答案(3)|浏览(139)

有一些第三方的WordPress插件不支持自动更新。所以,如果你已经安装了一个插件的v1.0,你试图安装一个新版本(例如v1.1),你最终会得到消息:

Destination folder already exists. /home/.../.../...

这就剩下两个选项,我都不想用途:卸载并重新安装插件,或通过FTP手动上传新文件。
在/wp-admin/includes/class-wp-upgrader. php的第428行我看到了这个代码:

public function install_package( $args = array() ) {
    global $wp_filesystem, $wp_theme_directories;

    $defaults = array(
        'source' => '', // Please always pass this
        'destination' => '', // and this
        'clear_destination' => false,
        'clear_working' => false,
        'abort_if_destination_exists' => true,
        'hook_extra' => array()
    );

    $args = wp_parse_args($args, $defaults);

    ...

有没有可能在我的主题的functions.php文件中添加一行来重新声明'clear_destination'为true,从而在我上传插件文件时强制Wordpress覆盖它们?
谢谢

pkln4tw6

pkln4tw61#

我一直在挖掘,并认为我找到了一个解决方案。如果我创建一个自定义插件,我可以使用'upgrader_package_options'过滤器重新声明选项:

function override_plugins( $options ) {

    $options['clear_destination'] = true;
    $options['abort_if_destination_exists'] = false;

    return $options;
}
add_filter( 'upgrader_package_options', 'override_plugins' );
46scxncf

46scxncf2#

不,那是不可能的。你需要编辑核心文件。
然而,您可以在相关网站上安装一个插件,它会为您解决这个问题:http://w-shadow.com/blog/2010/09/02/automatic-updates-for-any-plugin/
或者你可以在你的插件中加入一个更新框架,这样就可以从私人仓库(例如不是WP)提供更新:https://github.com/afragen/github-updater
或者,你可以使用类似WPPusher的东西,它可以在Github / BitBucket有更新时自动更新插件。

pengsaosao

pengsaosao3#

除了Phill Healey的答案之外,还有一个替代WPusher的服务专门用于WordPress开发,那就是WP Package Editor (WP2E)
软件包安装程序覆盖插件源并将安装记录到一个面板中,以监控脚本版本、升级和状态。

相关问题