我想自定义CM tooltip
插件的行为。
从我在代码中看到的插件是一个具有以下过滤器的类,它们是一种自描述的。
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_the_excerpt
过滤器,用于检查某些条件并禁用解析。当wpseo_opengraph_desc
被激活时,它可以重新解析。实际解析发生在cmtt_glossary_parse
函数中。
我写了一个新的插件并尝试了以下内容:
我编写了具有更高优先级的cmtt_disable_parsing函数
add_filter('get_the_excerpt', array($this, 'cmtt_disable_parsing'), 100);
我写了我的cmtt_glossary_parse函数来检查条件,然后调用CMTooltipClossaryFrontent :: cmtt_glossary_parse函数
add_filter('the_content', array($this, 'cmtt_glossary_parse'), 10008);
但它们都不起作用。此外,当我在我的插件中实例化原始插件时,原始插件无法正常工作(它不解析内容)
如何正确定制插件功能,我们将不胜感激。 我应该创建一个新的插件还是将代码放在functions.php中更好? 实例化一个插件类并调用它的方法是不是很糟糕,让我们说另一个插件?
答案 0 :(得分:2)
最后,我为我找到了一个有效的解决方案。所以我在这里删除一行,以防其他人发现它有用。
我读了这篇https://iandunn.name/the-right-way-to-customize-a-wordpress-plugin/指南,该指南描述了某人的替代方案,如果他想覆盖插件功能。
在我的情况下,解决方案类似于"覆盖他们的回调"部分。我下载了他的示例,它覆盖了google-authenticator插件,并遵循了几乎相同的策略。
特别是对于cm tooltp插件,我想自定义删除原始挂钩并重新添加它们,如果符合我的要求,我就可以使用。
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);
.....