自定义分类模板错误:可捕获的致命错误:无法将类WP_Error的对象转换为字符串

时间:2014-05-07 作者:Trish Thompson

一直在试图找出这方面的错误page:

可捕获的致命错误:类WP\\u error的对象无法转换为字符串

我有一个自定义的帖子类型和分类:

分类法:team_categories

术语:“委员会”(除其他外)

委员会下的儿童条款:继续教育、道德、立法行动等(该部分似乎有效)

每个委员会的团队成员(不工作)我想在“委员会”分类模板页面列出子术语,并显示每个委员会的成员,例如:

继续教育委员会

简·多伊、约翰·布朗等伦理委员会

杰克·琼斯(JackJones)等。以下是当前代码:

$taxonomyName = "team_categories";
//This gets top layer terms only.  This is done by setting parent to 0.  
$parent_terms = get_terms(
    $taxonomyName, 
    array( \'parent\' => 0, \'orderby\' => \'slug\', \'hide_empty\' => false )
);   
echo \'<ul>\';
foreach ( $parent_terms as $pterm ) {
    //Get the Child terms
    $terms = get_terms(
        $taxonomyName, 
        array( \'parent\' => $pterm->term_id, \'orderby\' => \'slug\', \'hide_empty\' => false )
    );
    foreach ( $terms as $term ) {
        echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . 
            $term->name . \'</a></li>\';  
    }
}
echo \'</ul>\';
错误出现在此处:

        echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . 
            $term->name . \'</a></li>\'; 

Update:

下面的代码让我非常接近我要寻找的内容:

$term_id = 26; // id of committees
$taxonomy_name = \'team_categories\';
$termchildren = get_term_children( $term_id, $taxonomy_name );                      
echo \'<ul>\';
foreach ( $termchildren as $child ) {
    $term = get_term_by( \'id\', $child, $taxonomy_name );
    echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . 
        $term->name . \'</a></li>\';
}
echo \'</ul>\';
它列出了“委员会”类别中的所有子类别。

如何在每个类别标题下显示每个类别的帖子?自定义帖子类型的名称为“团队”。

4 个回复
SO网友:kaiser

嗯,你echo 一个对象。如果你不确定你得到了什么回报,就不要只是重复那些东西。看看函数:错误本身很明显:

function get_term_link( $term, $taxonomy = \'\') {
    global $wp_rewrite;

    if ( !is_object($term) ) {
        if ( is_int($term) ) {
            $term = get_term($term, $taxonomy);
        } else {
            $term = get_term_by(\'slug\', $term, $taxonomy);
        }
    }

    if ( !is_object($term) )
        $term = new WP_Error(\'invalid_term\', __(\'Empty Term\'));
你似乎没有得到任何回报,所以你的$term->name 错误(或为空)。

要测试错误,请使用is_wp_error() 并输出消息:

$link = get_term_link( etc );
if ( is_wp_error( $link ) )
    echo $link->get_error_message();
然后,您应该得到发生的事情的正确输出,并应该能够修复它。

SO网友:Stephen S.

编辑:我建议添加endforeach;, 但我只是重新看了一下codex中的代码示例,他们没有使用它,所以看起来没有必要。

另一个建议是效仿get_term_link() 无需使用嵌套的foreach()来查看是否可以让它生成所需的“顶层术语”结果。

他们的代码示例的一个好处是,似乎通过一个错误继续:

$terms = get_terms( \'team_categories\' );

echo \'<ul>\';

foreach ( $terms as $term ) {

    // Sanitize the term, since we will be displaying it.
    $term = sanitize_term( $term, \'team_categories\' );

    $term_link = get_term_link( $term, \'team_categories\' );

    // If there was an error, continue to the next term.
    if ( is_wp_error( $term_link ) ) {
        continue;
    }

    // We successfully got a link. Print it out.
    echo \'<li><a href="\' . esc_url( $term_link ) . \'">\' . $term->name . \'</a></li>\';
}

echo \'</ul>\';
如果可行,那么使用示例样式的代码格式增加额外的复杂性。

SO网友:Jeremy Woods

对我起作用的是修复引用数组中对象部分的语法。

我的正确代码是echo $web_desc_title[$i]->name;

SO网友:Marius Graveland

This worked for me


$terms = get_the_terms( $post->ID , \'taxonomyname\' );

foreach ( $terms as $term ) {

echo $term->name;

}

?>
结束

相关推荐

自定义分类模板错误:可捕获的致命错误:无法将类WP_Error的对象转换为字符串 - 小码农CODE - 行之有效找到问题解决它

自定义分类模板错误:可捕获的致命错误:无法将类WP_Error的对象转换为字符串

时间:2014-05-07 作者:Trish Thompson

一直在试图找出这方面的错误page:

可捕获的致命错误:类WP\\u error的对象无法转换为字符串

我有一个自定义的帖子类型和分类:

分类法:team_categories

术语:“委员会”(除其他外)

委员会下的儿童条款:继续教育、道德、立法行动等(该部分似乎有效)

每个委员会的团队成员(不工作)我想在“委员会”分类模板页面列出子术语,并显示每个委员会的成员,例如:

继续教育委员会

简·多伊、约翰·布朗等伦理委员会

杰克·琼斯(JackJones)等。以下是当前代码:

$taxonomyName = "team_categories";
//This gets top layer terms only.  This is done by setting parent to 0.  
$parent_terms = get_terms(
    $taxonomyName, 
    array( \'parent\' => 0, \'orderby\' => \'slug\', \'hide_empty\' => false )
);   
echo \'<ul>\';
foreach ( $parent_terms as $pterm ) {
    //Get the Child terms
    $terms = get_terms(
        $taxonomyName, 
        array( \'parent\' => $pterm->term_id, \'orderby\' => \'slug\', \'hide_empty\' => false )
    );
    foreach ( $terms as $term ) {
        echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . 
            $term->name . \'</a></li>\';  
    }
}
echo \'</ul>\';
错误出现在此处:

        echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . 
            $term->name . \'</a></li>\'; 

Update:

下面的代码让我非常接近我要寻找的内容:

$term_id = 26; // id of committees
$taxonomy_name = \'team_categories\';
$termchildren = get_term_children( $term_id, $taxonomy_name );                      
echo \'<ul>\';
foreach ( $termchildren as $child ) {
    $term = get_term_by( \'id\', $child, $taxonomy_name );
    echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . 
        $term->name . \'</a></li>\';
}
echo \'</ul>\';
它列出了“委员会”类别中的所有子类别。

如何在每个类别标题下显示每个类别的帖子?自定义帖子类型的名称为“团队”。

4 个回复
SO网友:kaiser

嗯,你echo 一个对象。如果你不确定你得到了什么回报,就不要只是重复那些东西。看看函数:错误本身很明显:

function get_term_link( $term, $taxonomy = \'\') {
    global $wp_rewrite;

    if ( !is_object($term) ) {
        if ( is_int($term) ) {
            $term = get_term($term, $taxonomy);
        } else {
            $term = get_term_by(\'slug\', $term, $taxonomy);
        }
    }

    if ( !is_object($term) )
        $term = new WP_Error(\'invalid_term\', __(\'Empty Term\'));
你似乎没有得到任何回报,所以你的$term->name 错误(或为空)。

要测试错误,请使用is_wp_error() 并输出消息:

$link = get_term_link( etc );
if ( is_wp_error( $link ) )
    echo $link->get_error_message();
然后,您应该得到发生的事情的正确输出,并应该能够修复它。

SO网友:Stephen S.

编辑:我建议添加endforeach;, 但我只是重新看了一下codex中的代码示例,他们没有使用它,所以看起来没有必要。

另一个建议是效仿get_term_link() 无需使用嵌套的foreach()来查看是否可以让它生成所需的“顶层术语”结果。

他们的代码示例的一个好处是,似乎通过一个错误继续:

$terms = get_terms( \'team_categories\' );

echo \'<ul>\';

foreach ( $terms as $term ) {

    // Sanitize the term, since we will be displaying it.
    $term = sanitize_term( $term, \'team_categories\' );

    $term_link = get_term_link( $term, \'team_categories\' );

    // If there was an error, continue to the next term.
    if ( is_wp_error( $term_link ) ) {
        continue;
    }

    // We successfully got a link. Print it out.
    echo \'<li><a href="\' . esc_url( $term_link ) . \'">\' . $term->name . \'</a></li>\';
}

echo \'</ul>\';
如果可行,那么使用示例样式的代码格式增加额外的复杂性。

SO网友:Jeremy Woods

对我起作用的是修复引用数组中对象部分的语法。

我的正确代码是echo $web_desc_title[$i]->name;

SO网友:Marius Graveland

This worked for me


$terms = get_the_terms( $post->ID , \'taxonomyname\' );

foreach ( $terms as $term ) {

echo $term->name;

}

?>

相关推荐