2014-09-27 163 views
4

我在我的子主題functions.php文件中創建了短代碼。 的shortcode如下:WordPress的短代碼 - 奇怪的位置

function add_login_form() { 
if (is_user_logged_in()) 
{ 
    echo 'Witaj zalogowany'; 
} 
else 
{ 
    wp_login_form(); 
} 
} 
add_shortcode('login_form', 'add_login_form'); 

我添加簡碼[login_form]到我的網站(試驗區): http://s540141209.domenaklienta.pl/wordpress/konto-klienta/

它被添加到網站後的文字: 「TUTAJ POWINIEN BYC登錄表單LUB NAPIS 「WITAJ ZALOGOWANY」!「

它應該是第一個div內:<div class="et_pb_row">

但它僅僅是一個網頁的標題後顯示。你有什麼想法爲什麼會發生這種情況?

Thansk提前。但它恰好顯示在網站上的所有內容之前。

回答

6

請參閱http://codex.wordpress.org/Shortcode_API關於短碼的作用方式。在短代碼函數中,您應該始終返回在短代碼操作中完成的處理結果。一旦掛鉤被執行,它就會輸出它,而不是插入它應該在的位置。

function add_login_form() { 
if (is_user_logged_in()) 
{ 
    return 'Witaj zalogowany'; 
} 
else 
{ 
    return wp_login_form(array('echo'=>false)); 
} 
} 
add_shortcode('login_form', 'add_login_form'); 

對於wp_login_form的所有參數,請參閱http://codex.wordpress.org/Function_Reference/wp_login_form

+1

+1。打我吧 – Hobo 2014-09-27 14:42:45

+0

我從codex上閱讀了Shortcode_API文章,也在互聯網上閱讀了一些教程文章,但是我不清楚這個「返回」是如何工作的,而不是回聲。 – Zychoo 2014-09-28 11:20:18

+0

我不確定我是否理解什麼是'鉤子',什麼時候執行,但只要我的代碼可以工作,我就可以忍受它。現在它確實如此。 非常感謝Friso。 – Zychoo 2014-09-28 11:26:36