Error no detectado: no se puede usar el objeto de tipo WP_Term como matriz

2 minutos de lectura

Tuve este problema desde que actualicé mi WordPress, en mi sitio web tengo una publicación personalizada que contiene algunas categorías personalizadas, algo así:

1) Categoría principal: Alimentos |
Niño: Patatas fritas, hamburguesa, sirope de arce…

2) Categoría principal: Año |
Niño: 2016, 2015, 2014…

3) Categoría principal: País |
Niño: Estados Unidos, Canadá, España…

Entonces, cuando escribo mi publicación personalizada, elijo dentro de esas categorías y simplemente elijo (marque la casilla) la categoría que necesito. Y mostraría algo así:

Título: Nueva receta

Contenido: Mi texto

Términos: Comida: sirope de arce / País: Canadá / Año 2014

Pero ahora, los términos no se muestran en absoluto y aparece este mensaje de error:
No se puede usar un objeto de tipo WP_Term como matriz

Solía ​​​​tener el siguiente código PHP que me permitía recuperar el padre de la categoría secundaria (y lo usaba como prefijo) y también me permitía cambiar el orden.

  $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="https://stackoverflow.com/questions/41769716/{$tax_meta["external_url'][0]}'>$child</a>, ";
                                            }
                                            else {
                                                $s_children .= $child . ', ';
                                            }
                                        }
                                        else {
                                            $s_children .= $child . ', ';
                                        }
                                    }
                                    echo rtrim($s_children, ', ') . "<br />";
                                }
                            }

Estaré muy agradecido si alguien puede ayudar a averiguar qué salió mal.

Gracias por tu tiempo

  • Lamento volver a preguntar, pero hasta ahora no pude solucionar el problema por mi cuenta… Por el momento, mi solución temporal es eliminar la línea, pero luego, la mayoría de mis categorías desaparecerían… ¡Apreciaría mucho algunos consejos!

    – cbtr

    7 febrero 2017 a las 20:34

$terms_hierarchy no es una matriz, es un objeto estándar. Asi que …

$plazo[‘children’]

… sería en realidad …

$término->niños

  • ¡Gracias por ayudarme!

    – cbtr

    13 de julio de 2017 a las 10:10

¿Ha sido útil esta solución?