Uncaught Error: Cannot use object of type WP_Term as array
Uncaught Error: Cannot use object of type WP_Term as array
我在更新 WordPress 后遇到了这个问题,在我的网站上有一个自定义 post,其中包含一些自定义类别,例如:
1) Parent 类别:食品 |
Child:薯条、汉堡包、枫糖浆……
2) Parent 类别: 年份 |
Child: 2016, 2015, 2014…
3) Parent 类别:国家 |
Child:美国、加拿大、西班牙……
因此,当我编写自定义 post 时,我会在这些类别中进行选择,然后选择(勾选方框)我需要的类别。它会显示类似这样的内容:
标题:新配方
内容:我的文字
条款:食品:枫糖浆 / 国家/地区:加拿大 / 年份:2014
但是现在,这些条款根本不显示,我收到以下错误消息:
不能将 WP_Term 类型的 object 用作数组
我曾经有以下 PHP 代码,它允许我检索 child 类别的 parent(并将其用作前缀)并且还允许我更改命令。
$term_list = wp_get_post_terms($post->ID, 'project_cat', array("fields" => "all"));
$terms_hierarchy = array();
foreach ($term_list as $term_single) {
$parent = $term_single->parent;
if ($parent != 0) {
$terms_hierarchy[$parent][] = get_term($parent)->slug;
$terms_hierarchy[$parent]['children'][$term_single->term_id] = $term_single->name;
} else {
$terms_hierarchy[$parent] = $term_single;
}
}
//PHP indicated this line:
foreach ($terms_hierarchy as $key => $term) {
echo "<span>$term[0]: </span>";
if (!empty($term['children'])) {
$s_children = '';
foreach ($term['children'] as $key => $child) {
if ($term[0] == 'client') {
$tax_meta = get_term_meta($key);
if(!empty($tax_meta['external_url'][0])){
$s_children .= "<a target='_blank' href='{$tax_meta['external_url'][0]}'>$child</a>, ";
}
else {
$s_children .= $child . ', ';
}
}
else {
$s_children .= $child . ', ';
}
}
echo rtrim($s_children, ', ') . "<br />";
}
}
如果有人能帮助找出问题所在,我将不胜感激?
感谢您的宝贵时间
$terms_hierarchy 不是数组,它是一个 Std Object。所以...
$term['children']
...实际上是...
$term->children
我在更新 WordPress 后遇到了这个问题,在我的网站上有一个自定义 post,其中包含一些自定义类别,例如:
1) Parent 类别:食品 | Child:薯条、汉堡包、枫糖浆……
2) Parent 类别: 年份 | Child: 2016, 2015, 2014…
3) Parent 类别:国家 | Child:美国、加拿大、西班牙……
因此,当我编写自定义 post 时,我会在这些类别中进行选择,然后选择(勾选方框)我需要的类别。它会显示类似这样的内容:
标题:新配方
内容:我的文字
条款:食品:枫糖浆 / 国家/地区:加拿大 / 年份:2014
但是现在,这些条款根本不显示,我收到以下错误消息: 不能将 WP_Term 类型的 object 用作数组
我曾经有以下 PHP 代码,它允许我检索 child 类别的 parent(并将其用作前缀)并且还允许我更改命令。
$term_list = wp_get_post_terms($post->ID, 'project_cat', array("fields" => "all"));
$terms_hierarchy = array();
foreach ($term_list as $term_single) {
$parent = $term_single->parent;
if ($parent != 0) {
$terms_hierarchy[$parent][] = get_term($parent)->slug;
$terms_hierarchy[$parent]['children'][$term_single->term_id] = $term_single->name;
} else {
$terms_hierarchy[$parent] = $term_single;
}
}
//PHP indicated this line:
foreach ($terms_hierarchy as $key => $term) {
echo "<span>$term[0]: </span>";
if (!empty($term['children'])) {
$s_children = '';
foreach ($term['children'] as $key => $child) {
if ($term[0] == 'client') {
$tax_meta = get_term_meta($key);
if(!empty($tax_meta['external_url'][0])){
$s_children .= "<a target='_blank' href='{$tax_meta['external_url'][0]}'>$child</a>, ";
}
else {
$s_children .= $child . ', ';
}
}
else {
$s_children .= $child . ', ';
}
}
echo rtrim($s_children, ', ') . "<br />";
}
}
如果有人能帮助找出问题所在,我将不胜感激?
感谢您的宝贵时间
$terms_hierarchy 不是数组,它是一个 Std Object。所以...
$term['children']
...实际上是...
$term->children