向快捷码添加属性时显示的内容消失

时间:2015-12-26 作者:Pontus

在我的插件中,我添加了显示数据库数据的短代码,并添加了一些按钮。按下按钮后,页面末尾会显示更多数据。当短代码中没有添加任何属性时,这种方法非常有效,但如果添加了属性,则在按下按钮后,所有文本都会消失。

为什么添加属性似乎会删除我的短代码信息?

它看起来是这样的:

    function my_plugin(){   
        print "HTML-button + hidden_value"; 
        if ( isset( $_POST["button_is_pressed"] ) ) {
            print  do_shortcode($the_shortcode + attributes based on hidden value);
        }   
    }

    add_shortcode(\'my_shortcode\', \'my_shortcode_function\');
    function my_shortcode_function(){
         print "A lot of database data + button";

         if ( isset( $_POST["shortcode_button_is_pressed"] ) ) {
             print  "Even more database data";
         }  
    }
因此,当我向短代码添加属性时,短代码显示的信息消失了。如果没有添加属性,“大量数据库数据”+“更多数据库数据”将毫无问题地显示出来。为什么属性会有这种差异?

This was added later:现在,当我将“print”替换为字符串的返回(未显示)时,代码不工作似乎完全合乎逻辑,因为返回语句退出了shortcode函数。

但是,当按下快捷键时,如何显示额外的信息?此时,短代码的执行已经完成。

1 个回复
SO网友:Mark Kaplun

短代码应该返回其HTML,而不是输出它。要做到这一点,您需要重新调整shorcode代码。

您现在很幸运地得到了一些正确的输出,如果您使用实际内容进行测试,您会发现代码输出的位置错误。

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }