我必须对插件中的一些函数进行一些更改,这些函数没有挂钩,也不可插入。
我的想法是将我修改的函数包装在if ( ! function_exists())
并将我的修改移动到一个单独的插件中。然后,每当我需要更新插件时,我只需重新添加if ( ! function_exists())
包装器。
请告诉我为什么这是个坏主意,我应该做什么来代替它。
我必须对插件中的一些函数进行一些更改,这些函数没有挂钩,也不可插入。
我的想法是将我修改的函数包装在if ( ! function_exists())
并将我的修改移动到一个单独的插件中。然后,每当我需要更新插件时,我只需重新添加if ( ! function_exists())
包装器。
请告诉我为什么这是个坏主意,我应该做什么来代替它。
看起来您正在使用的插件对您和/或您的客户机非常重要,而且插件本身很可能会在适当的支持下定期更新。
我肯定会联系作者,讨论插件可能的更改。如果一个变更是一个建设性的变更,并且会给插件带来一定程度的有用性,那么我认为作者没有理由不在近期的版本/更新中实现您的变更。
首先,如果您的更改超出了当前插件的范围,您可以建议并要求作者在将来的版本/更新中根据需要添加适当的过滤器。
但是,是的,在研究其他解决方案之前,我会先从插件作者开始寻找这种支持
我想不出一个不使用过滤器的插件的例子。几乎所有插件都使用选项存储数据,因此使用与选项相关的挂钩。
您的插件可能使用了许多操作和过滤器,它们不在其高级代码中,但这并不阻止您使用它们来更改插件的行为。
另一种可能性是,如果没有其他方法影响输出的生成,则使用输出缓冲来操纵输出。
如果要操作的插件作为类存在,则可以在类中使用\\uu call函数覆盖它(扩展原始插件)。防止您编辑文件;你可能需要重写你的插件来跟上其他插件,但我认为扩展插件的类是你最好的选择,因为作者忽视了这一点。
我创建了一个插件并使用php文件作为样式表文件PHP样式表文件:<?php header(\'Content-type: text/css; charset: UTF-8\'); $x_position = 0; $y_position = -40px; ?> .blugin_box{ width:140px; height:140px; background:url(\"/mysi