如何防止插件更新破坏用户编辑?

时间:2011-08-30 作者:Peter Ajtai

如何防止插件更新破坏插件特定子目录中的用户编辑和文件添加?

我编写了一个语法突出显示插件,它使用了GeSHi。插件的子文件夹是GeSHi本身。许多用户希望自定义/编辑GeSHi中的语言文件。

具体而言,目录结构如下:

wp-content/plugins/my-plugin等多个子目录

  • wp-content/plugins/my-plugin/geshi/geshi/
    • 用户要将文件添加到此目录
    • 他们也会编辑此目录下的文件
    • 当他们获取新的更新时,我不想删除他们的编辑内容
    • 谢谢

      以下是我的想法,但我不知道如何实施:

      更新插件操作挂钩(?)制作要保留的文件的临时副本

      问题是我没有看到插件更新的挂钩。我看了看herehere.

  • 3 个回复
    SO网友:chrisguitarguy

    不允许用户添加文件或编辑文件。

    相反,使用以下方法do_actionapply_filters 就像WordPress核心一样。

    我不熟悉GeSHi,但我建议您找出它在类中的何处加载该语言所需的文件。修改文件路径,使其看起来像这样:

    $file_path = apply_filters( \'yourplugin_name_geshi_path\', $file_path, $lanuage );
    
    然后用户可以连接到它并相应地修改文件路径。。。

    <?php
    add_filter( \'yourplugin_name_geshi_path\', \'wpse27248_path_modify\', 10, 2 );
    function wpse27248_path_modify( $path, $language )
    {
       if( \'some_language\' = $language )
       {
          $path = \'/some/new/path\';
       }
       return $path;
    }
    
    您最好的选择可能是创建GeSHi的子类,修改需要修改的方法(如建议的那样),并将该类用于插件。如果GeSHi更新,您可以在不丢失更改的情况下加入新版本。

    无需担心覆盖用户文件或其他任何内容。如果用户需要库中的新语言,可以创建自己的非常简单的插件。

    SO网友:anmari

    wordpress通常鼓励用户使用uploads文件夹。任何插件更新都将始终覆盖插件文件夹中的任何内容。

    我让我的插件在上传下创建一个子文件夹,存储所有可编辑的内容。这样就可以安全地进行wp和插件/主题更新。

    到目前为止,我的插件检查上传/子文件夹中是否有自定义语言文件。如果没有,则从插件语言文件夹加载最新的默认语言版本。

    SO网友:Kenneth Odle

    为什么不使用版本控制软件,让每个人都为自己的分支机构贡献力量呢?在某一点上,您可以简单地将这些分支折叠到主插件repo中。

    结束

    相关推荐

    Can plugins become obsolete?

    我认为WordPress插件是由第三方制作的。插件是否必须与WordPress升级保持同步?插件会过时吗?如果它们确实过时了,比如Linkedin共享按钮、推特推特按钮和类似Facebook的按钮的插件,切换到不同的插件会导致喜欢/推特/共享的数量丢失吗?如果插件可能会过时,那么它会发生吗?或者插件通常是最新的?或者他们是开源的,所以其他人会让他们保持最新?(正如你可能猜到的,我不是程序员。)