【问题标题】:Modifying WordPress plugin markup修改 WordPress 插件标记
【发布时间】:2010-01-07 12:57:29
【问题描述】:

是否有一种“良好的工作实践”方法来修改 WordPress 插件生成的标记,而无需编辑插件的核心文件。我预见的问题是,当您更新插件时,您将修改的标记会被覆盖。

我知道在 Drupal 中有模板覆盖,但我对 WordPress 的了解还不够,无法进行类似的练习。

有什么帮助吗?

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    可能必须编写插件本身以允许它(尽管见下文)。有几种方法可以做到这一点:您可以让插件查找它从任意位置提取的模板文件(例如“uploads/myplugin”)您可以将 HTML 作为设置存储在数据库中。该插件可以使用 apply_filter 钩子编写(就像 WordPress 本身使用钩子一样)以允许更改输出的外部调用(例如,来自单独的插件或主题的 functions.php)。这些方法我都用过了。

    如果您正在谈论更改其他人插件的输出,您可能会要求他们实现上述之一。紧要关头你可以使用 JavaScript 来操作 DOM。

    【讨论】:

      【解决方案2】:

      您的问题的答案是钩子和模板。如果幸运的话,该插件将使用模板作为其输出,并检查您的主题以查看您是否已覆盖它们,或者它可能有一些过滤器钩子可让您修改其输出。如果你不那么幸运,并且无法让插件作者为你添加一些内容,那么你需要获得更多创意。

      • 挂钩插件所在的 WordPress 查询 制作,并更改它们以返回不同的结果。
      • 挂钩到 WordPress get_option() 函数以动态更改插件的设置。
      • 挂钩页面内容,并使用 preg_replace() 破解 HTML。
      • 在页面生成的早期挂钩,调用 ob_start() 以缓冲页面输出,并挂钩 wp_footer 以调用 ob_end_clean() 并使用 preg_replace() 破解 HTML。

      只是一些想法:)

      显然,最好使用插件而不是反对它。您应该检查您的插件是否使用模板,如果没有,请搜索对 apply_filter() 和 do_action() 的调用。但有时,需求是必须的!

      【讨论】:

        猜你喜欢
        • 2022-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        • 2013-04-17
        相关资源
        最近更新 更多