【问题标题】:page not updating when adding shortcode and it is rendering the shortcode content in wordpress dashboard also during wordpress plugin development添加简码时页面未更新,并且在 wordpress 插件开发期间也在 wordpress 仪表板中呈现简码内容
【发布时间】:2019-12-16 08:38:21
【问题描述】:

我正在为事件滑块开发一个 wordpress 插件,但是当我添加简码以显示滑块时,wordpress 页面编辑器不会更新,并且它还在管理仪表板中呈现内容。 我得到的错误是“更新失败。错误消息:响应不是有效的 JSON 响应。
screenshot of updating failed error

event-plugin.php文件

add_shortcode("myeventplugin","short_code_view");
function short_code_view(){
    include PLUGIN_DIR_PATH.'views/shortcode-template.php';
}

简码模板.php

<?php
$allevents=display_events_from_db();

?>
<div class="main-eps">
    <?php
    if (count($allevents)>0){
    foreach($allevents as $key=>$value){
    ?>
    <div class="eps-event-cards">
        <div class="img-cont">
            <img src="<?php echo $value['thumb'] ?>" class="event-thumb">
        </div>
        <div class="textcont">
            <a href="<?php echo $value['slug']; ?>"><p class="event-title"><?php echo $value['title'] ?></p></a>
            <p class="event-desc">
                <?php
                $aa=$value['description'];
                if (strlen($aa) >= 40) {
                    echo substr($aa, 0, 40)." ... ";
                }
                else {
                    echo $aa;
                }
                ?>
            </p>
            <p class="event-date">
                <?php
                $newDate   =   date("l M, d, Y", strtotime($value['date']));
                echo $newDate;
               ?>
            </p>


        </div>
    </div>
        <?php
    }
    }
    ?>
</div>

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    将您的简码更改为

    add_shortcode("myeventplugin","short_code_view");
    function short_code_view(){
        ob_start();
        include PLUGIN_DIR_PATH.'views/shortcode-template.php';
        $content = ob_get_contents();
        ob_end_clean();
        return $content;
    }
    

    【讨论】:

    • 这是正确的答案,短代码函数的“返回”必须是内容本身......不使用输出缓冲区就没有干净的方法。
    • 男人,我爱你!我终于找到了答案 - 谢谢 :-)
    【解决方案2】:

    你忘了加return:

    add_shortcode("myeventplugin","short_code_view");
    function short_code_view(){
        return include PLUGIN_DIR_PATH.'views/shortcode-template.php';
    }
    

    希望能帮到你。

    【讨论】:

    • @KhurramAnsari 你能在这里提供 var_dump(display_events_from_db();) 吗?
    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 2018-05-06
    • 2014-01-02
    • 1970-01-01
    • 2022-12-31
    • 2015-08-09
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多