一直在试图找出这方面的错误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>\';
它列出了“委员会”类别中的所有子类别。
如何在每个类别标题下显示每个类别的帖子?自定义帖子类型的名称为“团队”。
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>\';
如果可行,那么使用示例样式的代码格式增加额外的复杂性。