¿Cómo puedo solucionar: "Notice: Undefined offset: 0"?

29 ene 2017, 17:58:12
Vistas: 38.1K
Votos: 1

Estoy comenzando un sitio web en WordPress y tengo un problema con algunas de mis entradas.

Este problema solo está afectando a 2 de 4 artículos y después de investigar no puedo encontrar una razón para ello.

Este mensaje de error aparece justo debajo de la sección de comentarios:

Notice: Undefined offset: 0 in /home/***/public_html/wp-includes/class-wp-query.php on line 3152

Cuando busco esa línea, encuentro esta función:

Captura de pantalla mostrando el código de la función rewind_posts

He buscado esta función en mi código de WordPress y solo encontré algunas coincidencias:

grep -r rewind_posts *
wp-content/themes/magazine/themify/themify-wp-filters.php:              rewind_posts();
wp-includes/class-wp-query.php:                 $this->rewind_posts();
wp-includes/class-wp-query.php: public function rewind_posts() {
wp-includes/feed-rdf.php:<?php rewind_posts(); while (have_posts()): the_post(); ?>
wp-includes/query.php:function rewind_posts() {
wp-includes/query.php:  $wp_query->rewind_posts();

Respecto a estos resultados, hay dos implementaciones diferentes de esta función rewind_post en query.php y class-wp-query.php.

Solo hay dos lugares donde se invoca esta función. Me centro en el relacionado con el tema que se está utilizando, themify-wp-filters.php, se llama desde esta función: function themify_404_template. Esto no dice mucho, porque no estoy viendo una página 404.

Actualmente estoy usando el plugin Super Socializer pero no he habilitado la función de comentarios sociales.

¿Alguna idea?

3
Comentarios

¿desactivaste todos tus plugins?

funkysoul funkysoul
29 ene 2017 18:07:41

Se requiere un stack trace para intentar entender el problema. La razón principal de un problema no siempre está donde se emite el aviso.

Mark Kaplun Mark Kaplun
29 ene 2017 19:21:19

Sí @funkysoul, he desactivado todos los plugins y el mensaje aún está ahí. Luego, reemplacé mi tema Themify con Twenty Seventeen y, voilà, el mensaje de NOTICE desapareció. Así que definitivamente es un problema del tema.

WarioNeila WarioNeila
29 ene 2017 23:53:29
Todas las respuestas a la pregunta 5
4

Estás buscando en los archivos núcleo de WordPress la causa del aviso PHP, lo cual es una pérdida de tiempo, ya que 1) dudo que hayas encontrado un nuevo error en WordPress, 2) no querrás modificar los archivos núcleo de WordPress para solucionar un problema de un tema o plugin, y 3) el error es causado por un tema o plugin y no por el núcleo de WordPress, aunque aparezca en el aviso PHP como si apuntara a los archivos núcleo.

Y además de todo eso, es un aviso PHP. No es un error, ni un error fatal, sino un aviso. Lo único que significa es "oye, mírame, quizá quieras arreglarme en algún momento, pero no soy un error". Lee https://stackoverflow.com/questions/4624474/php-difference-between-notice-and-warning

AVISO: Es un mensaje que indica lo que deberías hacer y lo que no deberías hacer.

ADVERTENCIA: Ocurre durante la ejecución, pero no interrumpe la ejecución del código.

ERROR: También ocurre durante la ejecución, pero el programa no continúa su ejecución, se termina.

Así que revisa en wp-config.php y desactiva el modo depuración para no ver los avisos https://codex.wordpress.org/Debugging_in_WordPress O revisa en php.ini de tu cuenta de hosting; mira https://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display

Para encontrar de forma más efectiva la causa de un error o aviso PHP, usa Debug como se indica en los enlaces anteriores. Pero lo más simple es desactivar todos los plugins y reactivarlos hasta encontrar el que genera el aviso. Luego pide ayuda al plugin o revisa sus foros. O, si un plugin no es la causa, cambia al tema predeterminado de WordPress y comprueba si el aviso aparece en los registros de error grabados por wp_debug.

29 ene 2017 18:24:41
Comentarios

Si hay un aviso de PHP, entonces hay un error en el código que emite el aviso. Obviamente, el objeto wp_query está construido de manera incorrecta o fue modificado de alguna forma imprevista, pero si el núcleo no puede garantizar la integridad del objeto, debería verificar la existencia del índice en el arreglo antes de acceder a él, y/o dar un mejor mensaje de error. El OP solo había hecho la depuración que su conocimiento/comprensión le hizo considerar relevante, lo cual no es suficiente, pero no justifica llamar a los avisos como no errores...

Mark Kaplun Mark Kaplun
29 ene 2017 19:15:30

Muy buen esfuerzo @markratledge, también agregaría este enlace: http://stackoverflow.com/questions/6549561/notice-undefined-offset-0-in

prosti prosti
29 ene 2017 19:55:08

Gracias por tu respuesta @markratledge, realmente lo aprecio.

No me di cuenta de que estaba enfrentando un error de PHP en lugar de un error de WordPress. Un error de principiante, supongo.

Tu sugerencia sobre desactivar el modo DEBUG en wp-config.php me recordó que habilité este modo hace unos días. Así que, tal vez el mensaje de NOTICE siempre ha estado ahí pero no lo veía antes porque el modo DEBUG estaba desactivado.

Realmente te agradezco porque me has hecho entender un poco mejor cómo funciona WP. Gracias.

PD. Intentaré encontrar la causa raíz de este problema, pero me alegra poder ocultarlo.

WarioNeila WarioNeila
29 ene 2017 23:46:33

@WarioNeila86, el código de WordPress es código PHP.

prosti prosti
30 ene 2017 00:12:35
2

Recientemente proporcioné un análisis sobre la función rewind_posts.

>grep -r rewind_posts *
wp-content/themes/magazine/themify/themify-wp-filters.php:              rewind_posts();
wp-includes/class-wp-query.php:                 $this->rewind_posts();
wp-includes/class-wp-query.php: public function rewind_posts() {
wp-includes/feed-rdf.php:<?php rewind_posts(); while (have_posts()): the_post(); ?>
wp-includes/query.php:function rewind_posts() {
wp-includes/query.php:  $wp_query->rewind_posts();

Lo más probable es que el problema no esté en el núcleo de WordPress, ya que los ingenieros superiores de WordPress no permitirían que ocurrieran este tipo de problemas.

Por experiencia, los desarrolladores de temas a veces pueden olvidarse de limpiar el código, por lo que puedes esperar que el problema esté en:

wp-content/themes/magazine/themify/themify-wp-filters.php: 

Al usar rewind_posts sin verificar algunas condiciones con if(). El tema debería tener estos verificadores dependiendo de lo que intente rebobinar.

No tengo el código, así que no puedo decir más. Puedes enviar este problema al soporte del tema.

29 ene 2017 19:53:12
Comentarios

Hola @prosti, como comenté anteriormente, he eliminado todos los plugins y he verificado que este es un problema del tema. Me pondré en contacto con el soporte de Themify por si pueden ayudar.

WarioNeila WarioNeila
29 ene 2017 23:56:14

Sí, exactamente es en wp-content/themes/magazine/themify/themify-wp-filters.php: donde está el problema (en el tema) como señalé. @WarioNeila86

prosti prosti
30 ene 2017 00:09:33
0

Para mí, la solución fue llamar a the_post() antes de llamar a the_content().

2 dic 2020 19:04:10
0

Me encontré con el mismo aviso y la causa fue por usar el bucle de WordPress while(have_posts) dentro de un archivo single-{nombre}.php. Y el aviso desapareció después de eliminar el bucle.

17 dic 2020 13:43:18
0
-1

Para eliminar el script, debes configurar el archivo wp-config.php como se define a continuación.

define( 'WP_DEBUG', false );

25 mar 2020 19:01:55