Erro de modelo de taxonomia personalizado: erro fatídico fatal: object da class WP_Error não pôde ser convertido em string

Tentou perseguir um erro nesta página :

Erro fatal Catchable: Object of class WP_Error não pôde ser convertido em string

Eu tenho um tipo de postagem personalizado e taxonomia:

Taxonomia: team_categories

  • Termo: “Comitês” (entre outros)

    • Termos para crianças sob comitês: Educação Continuada, Ética, Ação Legislativa, etc. (* esta parte parece estar funcionando)

      • Membros da equipe em cada comitê (não está funcionando)

Quero listar os termos da criança na página do modelo de taxonomia “Comitês” e exibir os membros de cada comissão, por exemplo:

Comitê de Educação Continuada

  • Jane Doe
  • John Brown
  • etc.

Comite de Ética

  • Jack Jones
  • Ann Acme
  • etc.

Aqui está o código atual:

 $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 '
    '; 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 '
  • name, $taxonomyName ) . '">' . $term->name . '
  • '; } } echo '
';

O erro parece estar aqui:

  echo '
  • name, $taxonomyName ) . '">' . $term->name . '
  • ';

    Atualizar:

    O código a seguir me deixa perto do que estou procurando:

     $term_id = 26; // id of committees $taxonomy_name = 'team_categories'; $termchildren = get_term_children( $term_id, $taxonomy_name ); echo '
      '; foreach ( $termchildren as $child ) { $term = get_term_by( 'id', $child, $taxonomy_name ); echo '
    • ' . $term->name . '
    • '; } echo '
    ';

    Ele lista todas as sub-categorias na categoria “Comitês”.

    Como posso exibir as postagens de cada categoria em cada título de categoria? O nome do tipo de postagem personalizada é “equipe”.

    Solutions Collecting From Web of "Erro de modelo de taxonomia personalizado: erro fatídico fatal: object da class WP_Error não pôde ser convertido em string"

    Bem, você faz echo um object. Nunca faça eco de coisas se não tiver certeza do que obtém em troca. Dê uma olhada na function: o erro em si é bastante claro:

     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')); 

    Você parece não estar obtendo um object em troca, então, possivelmente, o seu $term->name é errado (ou vazio).

    Para testar um erro use is_wp_error() e para enviar a mensagem:

     $link = get_term_link( etc ); if ( is_wp_error( $link ) ) echo $link->get_error_message(); 

    Então você deve obter o bom resultado do que aconteceu e deve ser capaz de corrigi-lo.

    EDITAR: Eu tinha sugerido adicionar o valor endforeach; , mas acabei de observar o exemplo de código no códice e eles não o usam, por isso não parece necessário.

    Outra sugestão seria seguir o exemplo para get_term_link() sem usar o foreach nested () para ver se você conseguiu produzir os resultados desejados do “Top Layer Term”.

    Um benefício de seu exemplo de código é que parece continuar com um erro:

     $terms = get_terms( 'team_categories' ); echo '
      '; 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 '
    • ' . $term->name . '
    • '; } echo '
    ';

    Se isso funcionar, adicione a complexidade extra usando o estilo de exemplo de formatação de código.

    O que funcionou para mim foi corrigir minha syntax para se referir à parte do object dentro da matriz.

    O código correto no meu caso foi echo $web_desc_title[$i]->name;