WP_Error в шорткоде для отображения терминов

Я использую Anywhere Elementor для разработки шаблона архива таксономии. Я использую этот шорткод, чтобы показать весь термин

// Add Shortcode
function categorias_shortcode() {
    $taxonomyName = "families";
    $parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false, 'suppress_filters' => false));   
    echo '<ul style="list-style: none; margin: 0; color: white !important;">';
    foreach ($parent_terms as $pterm) {
        $terms = get_terms($taxonomyName, array('parent' => $pterm->term_id, 'orderby' => 'slug', 'hide_empty' => false));
        echo '<li><a style="color: white !important;" href="' . get_term_link( $pterm->name, $taxonomyName ) . '">' . $pterm->name . '</a></li>';
        foreach ($terms as $term) {
            echo '<li style="margin-left: 20px;"><a style="color: white !important;" href="' . get_term_link( $term->term_id, $taxonomyName ) . '">' . $term->name . '</a></li>';  
        }
    }
    echo '</ul>';
}
add_shortcode( 'categorias', 'categorias_shortcode' );

И это работало отлично, пока я не попробовал перевести эту страницу. WordPress выдает мне эту ошибку:

 Recoverable fatal error: Object of class WP_Error could not be converted to string in /usr/home/lloretensejove.cat/web/wp-content/themes/generatepress-child/functions.php on line 129 

Это строка 129:

echo '<li><a style="color: white !important;" href="' . get_term_link( $pterm->name, $taxonomyName ) . '">' . $pterm->name . '</a></li>';

Я не знаю, как исправить эту ошибку.


person Alex    schedule 16.09.2020    source источник
comment
Если вам не хватает переводов wpml для вашей таксономии, я думаю, он вообще не сможет найти таксономию и потерпит неудачу. Вы должны проверить свои переводы, а затем посмотреть, что содержит $ parent_terms   -  person Diego    schedule 16.09.2020
comment
Спасибо, @Diego! Теперь работает!   -  person Alex    schedule 24.09.2020


Ответы (1)


Я решил эту ошибку, просто изменив это имя $ pterm- ›на этот $ pterm-› term_id в строке:

echo '<li><a style="color: white !important;" href="' . get_term_link( $pterm->term_id, $taxonomyName ) . '">' . $pterm->name . '</a></li>';
person Alex    schedule 24.09.2020