当前位置: 首页 > 知识库问答 >
问题:

Wordpress覆盖CM工具提示插件函数

逄烨
2023-03-14

我想自定义CM工具提示插件的行为。从我在代码中看到的插件是一个具有以下过滤器的类,这些过滤器有点自我描述。

    class CMTooltipGlossaryFrontend {

        /*
         * FILTERS
         */
            add_filter('get_the_excerpt',array(self::$calledClassName,'cmtt_disable_parsing'), 1);
            add_filter('wpseo_opengraph_desc', array(self::$calledClassName, 'cmtt_reenable_parsing'), 1);

        /*
         * Make sure parser runs before the post or page content is outputted
         */
            add_filter('the_content', array(self::$calledClassName, 'cmtt_glossary_parse'), 9999);
            add_filter('the_content', array(self::$calledClassName, 'cmtt_glossary_createList'), 9998);
            add_filter('the_content', array(self::$calledClassName, 'cmtt_glossary_addBacklink'), 10000);
}

我想根据我的需要(帖子类型等)启用/禁用解析功能。

插件代码有get__摘录过滤器,用于检查某些条件并禁用解析。当激活wpseo\u opengraph\u desc时,它将重新启动解析。实际解析发生在cmtt\u glossary\u parse函数中。

我编写了一个新插件,并尝试了以下方法:

>

  • 我用更高的优先级编写了cmtt_disable_parsing函数

    add_filter('get_the_excerpt', array($this, 'cmtt_disable_parsing'), 100);
    

    我写了我的cmtt_glossary_parse函数,它检查条件,然后调用CMTooltipClossaryFronton::cmtt_glossary_parse函数

     add_filter('the_content', array($this, 'cmtt_glossary_parse'), 10008); 
     

    但它们都不起作用。另外,当我在插件中实例化原始插件时,原始插件无法正常工作(它无法解析内容)

    任何帮助将不胜感激如何自定义适当的插件功能。我应该创建一个新的插件还是把代码放在functions.php?实例化一个插件类并调用它的方法是不是一个不好的做法?

  • 共有1个答案

    孔运珧
    2023-03-14

    最后我找到了一个可行的解决方案。所以我在这里写了一行,以防别人觉得有用。

    我读了这个https://iandunn.name/the-right-way-to-customize-a-wordpress-plugin/ 指南,它描述了一个人想要覆盖插件功能时的备选方案。

    在我的例子中,解决方案类似于“覆盖它们的回调”部分中描述的解决方案。我下载了他的例子,它覆盖了谷歌认证插件,并遵循了几乎相同的策略。

    特别是对于cm工具提示插件,我想自定义删除原始挂钩并重新添加它们,如果我的要求得到满足,这对我来说非常有效。

    remove_filter('the_content', array(CMTooltipGlossaryFrontend::$calledClassName, 'cmtt_glossary_parse'), 9999);
    remove_filter('the_content', array(CMTooltipGlossaryFrontend::$calledClassName, 'cmtt_glossary_createList'), 9998);
    remove_filter('the_content', array(CMTooltipGlossaryFrontend::$calledClassName, 'cmtt_glossary_addBacklink'), 10000);
    

    并注册我的回调,再次启用原来的插件功能,如果我的要求满足使用以下代码

    //if (my_condition)
    add_filter('the_content', array(CMTooltipGlossaryFrontend::$calledClassName, 'cmtt_glossary_parse'), 9999);
    .....
    
     类似资料:
    • 当您需要描述链接时,工具提示很有用。 该插件的灵感来自Jason Frame编写的jQuery.tipsy插件。 从那时起,工具提示已更新为无图像,使用CSS动画制作动画,以及本地标题存储的数据属性。 如果您想单独包含此插件功能,那么您将需要tooltip.js 。 另外,如Bootstrap插件概述一章所述,您可以包含bootstrap.js或缩小的bootstrap.min.js 。 用法 (

    • 用法 对同时满足以下条件的元素使用工具提示: 具有交互性 主要是图形而非文本 (上图)可取 (上图)不可取 工具提示不同于悬浮卡片,后者用来显示图片和格式化的文本等更为丰富的信息。 工具提示也不同于ALT属性,后者用来提示静态图片的主旨。 (上图)可取 (上图)不可取 光标和键盘的工具提示 文本:Roboto Medium 10 sp 背景填充:90% 不透明度 工具提示动画 触摸屏UI的工具提示

    • 问题内容: 是否有用于本机(非托管)代码的免费代码覆盖工具?对于Windows或Linux平台? 问题答案: 来自GNU工具的gcov。

    • 问题内容: 是否有可能覆盖 全局 功能,从而在一定程度上影响 全局 功能? 据我所知,该函数在包装NodeJS脚本的函数中作为参数提供: 有什么方法可以修改功能吗? 这可能只会影响脚本所在的脚本。 我们如何在流程级别进行修改? 问题答案:

    • 我有一个Maven插件,它在POM文件中配置为 现在我想从命令行覆盖那个,所以我运行 我可以看到的值仍然是,而不是。可以从命令行覆盖配置参数吗?

    • 我有一个用Lombok的@Data注释的类,在一个gradle项目中,使用Sonarqube和Jacoco插件。 源代码可在 github 上找到 我有一个本地运行的sonarqube服务器作为docker容器运行,开始如下: 我添加了一个“lombok.config”文件,要求它添加@lombok。根据文档中的“全局配置键”部分,为其生成的代码生成注释。 我有以下声纳状态配置。 当我第一次运行s