覆盖WordPress插件中的函数

时间:2020-11-22 作者:H. M..

是否可以覆盖Wordpress插件调用的函数?在定制Wordpress插件时,我需要对一些代码块进行一些更改。我要修改的最关键的模块是处理保存和显示日期的函数。由于我们的本地日期不同于公历日期,因此插件基于的日期格式。因此,我需要覆盖插件的某些部分以满足本地需求。我已经更改了主插件内部的代码,但正如大家所知,更改原始插件内部的代码并不是一个好的做法,因为插件更新的那一刻,修改后的文件会被原始文件覆盖,因此,所有修改后的代码都会被删除。因此,我将编写一个新的插件来自动完成这个过程,并且不必担心主插件的更新时间。

总而言之,在新插件中,我将告诉Wordpress,每当主插件调用以下函数时,只需获取其参数,然后通过另一个函数运行它,例如displayDateLocal($id)。只要简单看一下这段代码。

function displayDate ($id) {
$userActivityDate = Br::show_activity_date($id);
    $return = apply_filters(\'user_activity\', $userActivityDate);}
正如您可以在函数的第二行中猜到的,它只调用另一个函数,即“show\\u activity\\u date”。这是一个格里高利日期,它不适合我们的本地用途,因此,如果这一行要本地化并在我们的情况下有用,则需要对其进行修改。因此,我需要告诉Wordpress,无论何时调用displayDate($id),只要获取参数并通过另一个函数运行它,例如displayLocalDate()。在这个函数中,我更改了日期结构,如果我能够这样做来覆盖主插件中原始函数中的代码,一切都很好。提前谢谢。

1 个回复
SO网友:Brandt Solovij

如果必须使用第三方函数,为什么不重新格式化返回值?

Date ($id) {
   $userActivityDate = Br::show_activity_date($id);
   date_timezone_set($userActivityDate, timezone_open(\'timezone You want it to be in\'));
   date_format($userActivityDate, \'Y-m-d H:i:sP\');
   $return = apply_filters(\'user_activity\', $userActivityDate);
}
如果Br::show_activity_date 在这种方式下没有直接的用处,那么我建议你更新你的问题,包括它返回的内容,以便提供更完整的答案。

https://www.php.net/manual/en/datetime.settimezone.php