Php 我写了一个Wordpress插件短代码,当我试图用该短代码更新页面时,它给了我一个标题Allready sent错误

Php 我写了一个Wordpress插件短代码,当我试图用该短代码更新页面时,它给了我一个标题Allready sent错误,php,wordpress,advanced-custom-fields,shortcode,Php,Wordpress,Advanced Custom Fields,Shortcode,我刚刚编写了一个插件,它应该通过shortcode显示一个带有acf字段的表(主要是分类法),以便更好地进行实习生链接。一切正常。但是,当我将短代码添加到页面并尝试更新它时,会出现PHP错误: 警告:无法修改标题信息-标题已由/wp admin/post.php第222行中的(输出从wp content/plugins/pwd taxo tables/taxo.php:64开始)发送 警告:无法修改标题信息-第1251行wp includes/pluggable.php中已发送的标题(输出从wp

我刚刚编写了一个插件,它应该通过
shortcode
显示一个带有
acf字段的表(主要是分类法),以便更好地进行实习生链接。一切正常。但是,当我将
短代码添加到页面并尝试更新它时,会出现
PHP错误

警告:无法修改标题信息-标题已由/wp admin/post.php第222行中的(输出从wp content/plugins/pwd taxo tables/taxo.php:64开始)发送

警告:无法修改标题信息-第1251行wp includes/pluggable.php中已发送的标题(输出从wp content/plugins/pwd taxo tables/taxo.php:64开始)

警告:无法修改标题信息-标题已由第1254行/wp includes/pluggable.php中的wp content/plugins/pwd taxo tables/taxo.php:64处开始输出)发送

知道密码有什么问题吗

// register jquery and style on initialization
add_action('init', 'register_script');
function register_script() {

    wp_register_style( 'new_style', plugins_url('/css/pwd.css', __FILE__), false, '1.0.0', 'all');
}

// use the registered jquery and style above
add_action('wp_enqueue_scripts', 'enqueue_style');

function enqueue_style(){

    wp_enqueue_style( 'new_style' );
}



function pwd_get_taxonomy_links($taxonomy){
    $terms = get_field($taxonomy);

    if($terms) {
        foreach ($terms as $term){
            $termdata = get_term_by('id',$term,$taxonomy);
            $taxname = $termdata->name;
            $taxurl = get_term_link($term,$taxonomy);
            $alltaxlinks .= '<a href="'.$taxurl.'">'.$taxname.'</a>, ';

        }
        echo rtrim($alltaxlinks, ', ');
    }

}

function method1($a,$b)
{
    return ($a["menu_order"] <= $b["menu_order"]) ? -1 : 1;
}
function get_tax_vale(){

    $fields = get_fields();
    //echo "<pre>" . print_r($fields) . "</pre>";

  /*  foreach ($fields as $name => $value){
        $fielddata = get_field_object($name);
        $fields[$name]['menu_order']= $fielddata['menu_order'];
    }
*/
    //echo "<pre>" . print_r($fields) . "</pre>";
  //  uasort($fields, "method1");
    //print_r($fields);
    if($fields){
        echo '<table class="table table-details table-condensed" style="font-size:0.7rem;"><tbody>';

        foreach( $fields as $name => $value ){

            $fielddata = get_field_object($name);
            $label = $fielddata['label'];
            $type = $fielddata['type'];
            $order = $fielddata['menu_order'];

            if($name != "einleitung" && $name != "affiliate_link" && $name != "menu_order"){
                echo '<tr><td><span class="">' . $label . '</span></td><td>';

                if($type != "taxonomy"){
                    echo $value;
                }
                else{
                    pwd_get_taxonomy_links($name);
                }

                echo '</td><td><a target="_blank" class="tax-button" href="' . get_field('affiliate_link') . '">Zum Anbieter</a> </td></tr>';

            }



        }
        echo ' </tbody></table>';

    }


}

add_shortcode('taxotable', 'get_tax_vale');
//初始化时注册jquery和样式
添加_操作('init','register_script');
函数寄存器_脚本(){
wp_register_style('new_style',plugins_url('/css/pwd.css',_uu文件),false,'1.0.0','all');
}
//使用上面注册的jquery和样式
添加_操作(“wp_排队_脚本”、“排队_样式”);
函数排队_style(){
wp_排队_样式(“新_样式”);
}
函数pwd_get_taxonomy_links($taxonomy){
$terms=get_字段($taxonomy);
如果($条款){
foreach($terms作为$term){
$termdata=get_term_by('id',$term,$taxonomy);
$taxname=$termdata->name;
$taxurl=获取术语链接($term$taxonomy);
$alltaxlinks.=',';
}
echo rtrim($AllTaxLink,,');
}
}
函数方法1($a$b)
{
返回($a[“菜单顺序”]$value){
$fielddata=get\u field\u对象($name);
$fields[$name]['menu_order']=$fielddata['menu_order'];
}
*/
//回显“.print_r($fields)”;
//uasort($fields,“method1”);
//打印(字段);
如果($fields){
回声';
foreach($name=>$value的字段){
$fielddata=get\u field\u对象($name);
$label=$fielddata['label'];
$type=$fielddata['type'];
$order=$fielddata['menu_order'];
如果($name!=“einleitung”&&&$name!=“附属链接”&&&$name!=“菜单顺序”){
回显“.$label.”;
如果($type!=“分类法”){
echo美元价值;
}
否则{
pwd_获取_分类法_链接($name);
}
回声';
}
}
回声';
}
}
添加快捷码(“taxotable”、“get_tax\u vale”);

试试这个代码

这里的原因是add_shortcode函数必须返回一个值,而不是直接输出

函数get\u tax\u vale(){ $fields=get_fields(); 如果($fields){ $htmlscript=''; foreach($name=>$value的字段){ $fielddata=get\u field\u对象($name); $label=$fielddata['label']; $type=$fielddata['type']; $order=$fielddata['menu_order']; 如果($name!=“einleitung”&&&$name!=“附属链接”&&&$name!=“菜单顺序”){ $htmlscript.=''.$label'; 如果($type!=“分类法”){ $htmlscript.=$value; } 否则{ $htmlscript.=pwd_get_taxonomy_links($name); } $htmlscript.=''; } } $htmlscript.=''; } 返回$htmlscript; } 添加快捷码(“taxotable”、“get_tax\u vale”);
此代码中的第64行将在此处:echo“”。。。但我不知道有什么问题?试着返回一个字符串,而不是原地回音。该函数是在标题信息被调用之前调用的,这会中断站点的流程。最好是解释差异,而不是仅仅转储一堆更改过的代码。这里的原因是
add\u shortcode
函数必须返回一个值,而不是直接输出。
    function get_tax_vale(){

        $fields = get_fields();

        if($fields){
            $htmlscript = '<table class="table table-details table-condensed" style="font-size:0.7rem;"><tbody>';

            foreach( $fields as $name => $value ){

                $fielddata = get_field_object($name);
                $label = $fielddata['label'];
                $type = $fielddata['type'];
                $order = $fielddata['menu_order'];

                if($name != "einleitung" && $name != "affiliate_link" && $name != "menu_order"){
                    $htmlscript .= '<tr><td><span class="">' . $label . '</span></td><td>';

                    if($type != "taxonomy"){
                        $htmlscript .=  $value;
                    }
                    else{
                        $htmlscript .= pwd_get_taxonomy_links($name);
                    }

                    $htmlscript .=  '</td><td><a target="_blank" class="tax-button" href="' . get_field('affiliate_link') . '">Zum Anbieter</a> </td></tr>';

                }
            }
            $htmlscript .=  ' </tbody></table>';
        }

     return $htmlscript;
    }
    add_shortcode('taxotable', 'get_tax_vale');