如何自定义插件,同时保持升级能力


8

我目前正在对我的WordPress插件之一进行重大更新。

该插件使用户可以从几种可用的皮肤中进行选择。我经常被要求创建自定义皮肤。为了防止这种皮肤在升级时被删除,我必须使用WordPress挂钩来禁用插件的自动更新。这显然不是理想的,因为我希望他们仍然能够更新插件。问题是WordPress处理更新的方式-它只是删除插件文件夹并安装新版本。因此,删除实际上不是旧版本一部分的文件。

目前,解决该问题的唯一方法是拥有两个外观文件夹,一个位于插件文件夹中,一个位于上载文件夹中,这真的是我可以为用户提供此外观的唯一方法吗?

Answers:


4

许多插件用于/wp-content/custom-plugin-folder/存储自定义插件数据(WPTouch浮现在脑海)。

只需使用常量WP_CONTENT_URLWP_CONTENT_DIR 文档来检查文件夹是否存在并检索任何可用的皮肤。

以下文章虽然与本课题没有直接关系,但说明了插件/主题加载其自己的打包文件之前首先wp-content/languages文件夹中搜索翻译的重要性。值得一读,希望您能在下一个版本中应用它:) .mo

以正确的方式加载WordPress语言文件我想指出,在加载插件随附的语言文件之前,从WP_LANG_DIR加载自定义用户语言文件非常重要。当为同一个域加载多个Mo文件时,将使用第一个找到的翻译。这样,插件提供的语言文件将充当用户未翻译的字符串的后备。
http://www.geertdedeckere.be/


7

另一种方法是让人们添加自己的子插件。例如,获取皮肤的核心插件中的代码可能类似于:

function get_available_skins() {
    $skins[] = '/includes/default-skin.css';
    $skins[] = '/includes/2012-skin.css';

    return apply_filters( 'get_available_skins', $skins );
}

然后,用户可以创建一个与您的插件同时安装的自定义插件(单独激活,以便不会干扰您的更新),该插件可以执行以下操作:

add_filter( 'get_available_skins', 'my_custom_skin' );
function my_custom_skin( $skins ) {
    $skins[] = '/my-custom-skin.css';

    return $skins;
}

这与WordPress使用挂钩使其自身可扩展的方式完全相同。不要重新发明轮子。

(显然,我不知道您使用的是哪个插件,自定义外观是什么样的,或者您是如何编写代码的,因此,您仅需将上面的代码用作模型来重构您的代码自己的代码。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.