2013-10-25 23 views
0

我已經添加了這個小函數來阻止WordPress檢查更新。然而,在PHP版本中,PHP 5.3以下的匿名函數不起作用。我並沒有真正理解下面的代碼中的匿名函數的用途,所以寧可問這裏 - 我如何重寫此代碼以使用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); 

回答

2

您可以使用create_function這已自PHP 4

$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做了什麼。

+0

非常感謝你:) – Mohammad

相關問題