6

自从我更新了 WordPress 后,我就遇到了这个问题,在我的网站上,我有一个自定义帖子,其中包含一些自定义类别,如下所示:

1)父类别:食品 | 儿童:薯条、汉堡包、枫糖浆……</p>

2)父类:年 | 孩子: 2016, 2015, 2014…</p>

3)父类别:国家 | 孩子:美国、加拿大、西班牙……</p>

因此,当我编写自定义帖子时,我会在这些类别中进行选择,然后选择(勾选框)我需要的类别。它会显示类似的内容:

标题:新食谱

内容:我的文字

条款食物:枫糖浆/国家:加拿大/年份:2014

但是现在,这些术语根本没有显示,并且我收到此错误消息: Cannot use object of type WP_Term as array

我曾经有以下 PHP 代码,它允许我检索子类别的父级(并将其用作前缀),还允许我更改顺序。

  $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 />";
                                }
                            }

如果有人可以帮助找出问题所在,我将不胜感激?

谢谢你的时间

4

1 回答 1

18

$terms_hierarchy 不是一个数组,它是一个标准对象。所以 ...

$term['孩子']

……实际上是……

$term->儿童

于 2017-07-04T22:41:10.257 回答