如何重写此匿名函数代码以适用于 5.3 之前的 PHP 版本?

问题描述 投票:0回答:1

我添加了这个小功能来阻止 WordPress 检查更新。然而,在低于 PHP 5.3 的 PHP 版本中,匿名函数不起作用。我实际上并不理解下面代码中匿名函数的用途,所以宁愿在这里问 - 如何重写此代码以使用 5.3 之前的 PHP 版本?

$func = function($a){
    global $wp_version;
    return (object) array(
        'last_checked' => time(),
        'version_checked' => $wp_version,
    );
};
add_filter('pre_site_transient_update_core', $func);
add_filter('pre_site_transient_update_plugins', $func);
add_filter('pre_site_transient_update_themes', $func);
php compatibility php-5.3 anonymous-function php-5.2
1个回答
2
投票

您可以使用自 PHP 4 以来就存在的

create_function

$func = create_function(
    '$a',
    'global $wp_version; return (object)array("last_checked" => time(), "version_checked" => $wp_version);'
);

add_filter('pre_site_transient_update_core', $func);
add_filter('pre_site_transient_update_plugins', $func);
add_filter('pre_site_transient_update_themes', $func);

WordPress 中的匿名函数是不好的做法。挂钩的好处是,最终用户(或插件/主题作者之外的其他人)可以根据需要删除回调。除非您在某个地方保留对匿名函数的引用,否则您无法使用匿名函数来做到这一点。在这种情况下,最好只使用真实的函数。

function so19590942_check_version($a)
{
    global $wp_version;
    return (object) array(
        'last_checked' => time(),
        'version_checked' => $wp_version,
    );
}

add_filter('pre_site_transient_update_core', 'so19590942_check_version');
add_filter('pre_site_transient_update_plugins', 'so19590942_check_version');
add_filter('pre_site_transient_update_themes', 'so19590942_check_version');

这可以让另一个插件/主题作者或最终用户做类似的事情......

remove_filter('pre_site_transient_update_core', 'so19590942_check_version');

如果他们不喜欢您在

so19590942_check_version
中所做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.