快捷码正在页面编辑器中运行

时间:2017-10-02 作者:Suit Boy Apps

我正在尝试制作一个插件,允许用户向他们的网站添加一个短代码。我面临的问题是,一旦将短代码放置在页面中,短代码就会在页面编辑器和前端运行,我希望它只在前端运行。

Short Code Running In Editor

我跟着this guide 关于如何制作短代码。我在网上搜索了一下,看到有人建议在哪里添加该功能ob_start(); 但这似乎没有帮助。我看过其他指南,似乎没有人涉及这个问题。我做错了什么?

Code:

add_shortcode(\'sss-redeem\', \'Redeem\');

function Redeem(){
    ob_start();
    $IsAdmin = is_super_admin(get_current_user_id());       
    ?>
    <form>
    <center>
    <?php
    if($IsAdmin){
        ?>
        <input type="checkbox" name="overwrite" value="true">Overwrite?<br>
        <?php
    }
    ?>
    <strong><h2>Order ID</h2></strong> <input type="text" maxlength="4" name="oid"/><br>
    <input type="text" name="pgs" value="a5b6n66f34ka1n1d" style="display: none;" />
    <button type="submit">Submit</button>
    </form>
    </center>   
    <?php
}
NOTE: 我是开发WordPress插件的新手。事实上,这个插件是我第一次尝试制作插件。

2 个回复
SO网友:Suit Boy Apps

多亏了@mmm,我才明白过来。我现在要做的是在php标记之间添加表单。

EXAMPLE of what I was doing

?>
    <input type="checkbox" name="overwrite" value="true">Overwrite?<br>        
<?php
我需要做的是将要添加到页面的内容添加到字符串中,然后在函数完成时返回该字符串。所以我希望我的代码是

EXAMPLE of what I should have been doing

<?php
$out = \'<input type="checkbox" name="overwrite" value="true">Overwrite?<br>\';
return $out;
?>

SO网友:IBRAHIM EZZAT

您应该返回值而不是回显它,您可以使用如下内容:

add_shortcode(\'sss-redeem\', \'Redeem\');

function Redeem(){
    $IsAdmin = is_super_admin(get_current_user_id());       
    $RedeemValue.=\'<form>\';
    $RedeemValue.=\'<center>\';
    if($IsAdmin){
        $RedeemValue.=\'<input type="checkbox" name="overwrite" value="true">Overwrite?<br>\'
    };
    $RedeemValue.=\'<strong><h2>Order ID</h2></strong> <input type="text" maxlength="4" name="oid"/><br>\';
    $RedeemValue.=\'<input type="text" name="pgs" value="a5b6n66f34ka1n1d" style="display: none;" />\';
    $RedeemValue.=\'<button type="submit">Submit</button>\';
    $RedeemValue.=\'</form>\';
    $RedeemValue.=\'</center>\';
    return $RedeemValue;
}

结束

相关推荐

How does a shortcode work?

我知道如何使用短代码,甚至制作它们,但我需要了解的是,短代码是作为帖子内容存储在数据库中的纯文本,所以像这样的纯文本如何转换为动态文本。我想知道的是x 在服务器将文本发送到浏览器以使其正常工作之前,是否可以处理文本?