2014-09-27 58 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