2016-05-17 126 views
1

我在Wordpress中有一個表單生成的PHP文件,它調用一個自定義函數來獲取用戶數據來填充窗體。如果沒有找到用戶,該功能將正常運行(如果應答,則返回「無效用戶名」),但如果用戶有效,則不會逐步執行該功能。這是它的要點:Wordpress函數創建窗體返回False

function print_report($username, $var2, $var3) 
{ 
    $user = get_user_by('login', $username); 
    if($user) { 
    //get all the information and create the form 
    } 
    else echo "invalid username"; 
    return false; 
} 

看來,當一個有效的用戶被發現,它不通過該功能,但跳到最後。換句話說,如果用戶有效,它將返回「false」。

我希望我解釋得很好。如果您需要其他信息,請告訴我。

編輯

我已經做了var_dump()的建議。它找到用戶,但仍然返回false。這是我的測試用戶的結果:

string 'jimv3000' (length=8) 
object(WP_User)[1610] 
    public 'data' => 
    object(stdClass)[1634] 
     public 'ID' => string '1101' (length=4) 
     public 'user_login' => string 'jimv3000' (length=8) 
     public 'user_pass' => string '*THERE IS A PASSWORD HERE*' (length=34) 
     public 'user_nicename' => string 'jimv3000' (length=8) 
     public 'user_email' => string '*THERE IS AN EMAIL HERE*' (length=18) 
     public 'user_url' => string '' (length=0) 
     public 'user_registered' => string '2016-05-16 20:37:30' (length=19) 
     public 'user_activation_key' => string '' (length=0) 
     public 'user_status' => string '0' (length=1) 
     public 'display_name' => string 'jimv3000' (length=8) 
    public 'ID' => int 1101 
    public 'caps' => 
    array (size=1) 
     'subscriber' => boolean true 
    public 'cap_key' => string 'wp_capabilities' (length=15) 
    public 'roles' => 
    array (size=1) 
     0 => string 'subscriber' (length=10) 
    public 'allcaps' => 
    array (size=3) 
     'read' => boolean true 
     'level_0' => boolean true 
     'subscriber' => boolean true 
    public 'filter' => null 
false 

一如既往,非常感謝您的幫助。

+0

你有'$ username'和'$ user'什麼?你可以做一個'var_dump($ username,$ user)'並顯示你的結果嗎? –

+0

除非你告訴代碼在if語句中「返回」某些東西,否則你總是會返回false,因爲return語句落在你的if語句之外。 –

+0

它確實找到用戶和數據。返回時間太長,無法在此處發佈,但它會查找用戶數據,並在最後返回「false」。 –

回答

0

試試這個

function print_report($username, $var2, $var3) 
{ 
$user = get_user_by('login', $username); 
if($user) { 
//get all the information and create the form 
} 
else { echo "invalid username"; 
return false; } 
} 
3

PHP conditionals, brackets needed?

您對您的else語句,這意味着當你的功能,當用戶存在進入if語句,它不管你告訴它做的事情,然後掉下來沒有括號底部並執行你的返回虛假陳述。

如果您希望只在未找到用戶時返回false,則需要在else語句中放置大括號。

無論如何讓您的代碼更清晰易讀,您可能希望添加它們。它可以更容易地找到這種問題。