生成标头的快捷码已发送错误

时间:2016-08-15 作者:brandozz

我已经为站点地图页面创建了一个短代码。当我在页面上进行更改并单击更新时,我会收到一个标题已发送错误。下面是我的短代码和两条错误消息。我想知道我是否需要工作ob_start()ob_get_clean() 但我不是百分之百肯定它应该如何格式化。

function site_map2( $atts ) {
    $atts = shortcode_atts(
        array(
            \'exclude\' => \'\',
        ), $atts );
        return \'<ul>\' . wp_list_pages(\'exclude=\' . $atts[\'exclude\'] . \'&sort_column=post_title&title_li=\') . \'</ul>\';
}
add_shortcode( \'SiteMap2\', \'site_map2\' );
以下是错误消息:

警告:无法修改标题信息-标题已由/public\\u html/wp admin/post中的(输出开始于/public\\u html/wp includes/post template.php:1205)发送。php在线197

警告:无法修改标题信息-标题已由/public\\u html/wp includes/plugable中的(输出开始于/public\\u html/wp includes/post template.php:1205)发送。php在线1167

2 个回复
最合适的回答,由SO网友:brandozz 整理而成

下面对我的函数进行的调整修复了这个问题,但我想确保这是处理短代码的正确方法。我添加了ob\\u start();和ob\\u get\\u clean();到函数。这是处理这种事情的正确方法吗?

function site_map2( $atts ) {
    $atts = shortcode_atts(
        array(
            \'exclude\' => \'\',
        ), $atts );
        ob_start();
        echo \'<ul>\' . wp_list_pages(\'echo=false\' . \'&exclude=\' . $atts[\'exclude\'] . \'&sort_column=post_title&title_li=\') . \'</ul>\';
        return ob_get_clean();
}
add_shortcode( \'SiteMap2\', \'site_map2\' );

SO网友:jgraup

您需要从返回值wp_list_pages 而不是\'echo\' 默认情况下。

\'回音\'

(bool)是否响应页面列表。默认为true。

return \'<ul>\' . wp_list_pages( \'echo=false\' . \'&exclude=\' . $atts[\'exclude\'] . \'&sort_column=post_title&title_li=\') . \'</ul>\';

相关推荐

Execute shortcodes in PHP

我在帖子编辑器中添加了一个地理位置快捷码,可以根据用户的位置显示不同的信息,将其放在帖子页面的内容中,效果非常好。如何在主题的PHP文件中执行此短代码[地理位置][地理位置]?我正在使用免费修改Wordpress主题,我想添加一个新的<span>[geolocation][/geolocation]Information text content</span> 但在主题的内部。php文件,我如何才能做到这一点?如果我直接加上<span>[geolocation][/ge