Advertencia: Argumento no válido suministrado para foreach() en portfolio-list.php

21 jun 2017, 05:02:21
Vistas: 14.9K
Votos: 1

Estoy teniendo problemas con mi tema de WordPress.

Recibo el siguiente error después de subir una imagen destacada en mis elementos de portafolio:

Warning: Invalid argument supplied for foreach() in /home2/maryhtran/public_html/wp-content/themes/Motive/portfolio-list.php on line 150

Este es el código que está causando el error, encontrado en portfolio-list.php:

// Obtener los términos (categorías) para el elemento del portafolio
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );

foreach( $terms as $term ) {
// algún código aquí
}

¿Podría alguien ayudarme a entender por qué ocurre esto y cómo puedo solucionar este error?

1
Comentarios

Este problema requiere conocimiento sobre cómo fue construido el tema. Por lo tanto, es mejor que le preguntes a su autor que a un sitio de propósito general como WPSE.

cjbj cjbj
21 jun 2017 10:52:47
Todas las respuestas a la pregunta 3
1

Ocurre cuando al foreach() se le pasa una entrada inválida, porque no se ha devuelto ningún término. Para evitarlo, envuelve tu bucle dentro de una condición:

// Obtener los términos (categorías) para el elemento del portafolio
$terms = get_the_terms( $post_item->ID, 'portfolio_categories' );
if(is_array($terms) || is_object($terms)){
    foreach( $terms as $term ) {
    // algún código aquí
    }
}

Ahora, el bucle solo se ejecutará cuando el post tenga algunos términos.

21 jun 2017 11:47:47
Comentarios

Dos notas adicionales: 1. Por favor, crea un tema hijo si haces eso. 2. Como solución rápida para este error (que deberías reportar al autor del tema para que pueda corregirlo) asegúrate de que cada entrada tenga al menos una categoría asignada.

kraftner kraftner
22 jun 2017 13:50:22
0

El error está en tu tema. Contacta al soporte del tema. Ese es el lugar adecuado para preguntas relacionadas con temas.

(Pero, el error parece que la función get_the_terms() no está devolviendo un array, por lo que el foreach no funcionará.)

Eso debe ser arreglado por el autor del tema.

21 jun 2017 06:37:04
0

Será un poco difícil de predecir, pero aquí hay algunas opciones que podrías probar:

  1. Intenta mostrar el ID de la publicación para ver si realmente se está cargando.
  2. Verifica si "portfolio_categories" es el nombre exacto de tu taxonomía. Puedes pasar el cursor sobre el enlace en el panel de administración y buscar "taxonomy=[algún_nombre]" en la URL.

Revisa estos puntos y mira qué puedes encontrar.

21 jun 2017 12:26:58