• ResueltoModerador almendron

    (@almendron)


    El error es el siguiente:

    PHP Fatal error:  Uncaught Error: Object of class WP_Error could not be converted to string in .../tribuna/wp-content/themes/stargazer/cod-personal/ruta-personalizada.php:27

    Hace referencia a una ruta personalizada que se muestra cuando se accede a la taxonomía «autor».
    Ejemplo: https://www.almendron.com/tribuna/autor/mario-vargas-llosa/page/2/

    El error no salta en la primera página sino al acceder a la segunda o posteriores. Si accedéis, no vais a ver el error. Sucede muy de vez en cuando.

    La línea en concreto donde salta el error es

    <?php echo '<a itemprop="item" href="' . $rutatax . '">' . '<span itemprop="name">' . $current_tax . '</span>' . '</a>'; ?>

    Teniendo en cuenta que

    1. El error salta al acceder a la segunda página o posterior.
    2. La variable «$rutatax» solo aparece en la página 2 o siguientes.
    3. La variable «$current_tax» aparece en todas las páginas (incluida la primera).

    Llego a la conclusión que el problema está en «$rutatax»

    Ambas variables están definidas con anterioridad:

    $current_tax = single_term_title('', false);
    $rutatax = get_term_link($current_tax, 'autor');

    Mi duda es si la solución sería incluir un condicional:

    if ( !is_wp_error( $rutatax ) and !empty( $rutatax ) ) {
    ...... código para crear ruta personalizada.
    }
    • Este debate fue modificado hace 2 semanas por almendron.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador Sergio

    (@kallookoo)

    Hola,

    En tu archivo de functions del tema, copia lo siguiente:

    /**
    * Muestra el enlace del autor (tax)
    *
    * Si falla se intenta mostra el nombre solamente.
    *
    * @return void
    */
    function almendron_the_autor_link() {
    $term_object = get_queried_object();
    // Primer fallo posible.
    if ( ! is_a( $term_object, '\WP_Term' ) ) {
    return;
    }
    // HTML inicial - solo el nombre.
    $html = sprintf( '<span itemprop="name">%s</span>', esc_html( $term_object->name ) );
    // Obtenemos el enlace.
    $term_link = get_term_link( $term_object );
    // Segundo fallo posible.
    if ( ! ( empty( $term_link ) || is_wp_error( $term_link ) ) ) {
    // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    printf( '<a itemprop="item" href="%s">%s</a>', esc_url( $term_link ), $html );
    return;
    }
    // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
    echo $html;
    }

    En ruta-personalizada.php elimina el código que mencionas y en el echo '<a itemprop... lo remplazas por almendron_the_autor_linl();

    • Esta respuesta fue modificada hace 2 semanas por Sergio.
    Moderador almendron

    (@almendron)

    Gracias, Sergio.

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)

Debes estar registrado para responder a este debate.