繁体   English   中英

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

[英]How to rewrite this Anonymous Function code to work with PHP versions before 5.3?

我添加了这个小函数来阻止WordPress检查更新。 但是在PHP版本低于PHP 5.3的匿名函数不起作用。 我实际上并没有理解代码中的匿名函数的目的,所以宁愿在这里问一下 - 如何在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 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所做的so19590942_check_version

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM