Error misterioso con RankMath

por | 10 marzo 2021

Me encuentro con que en la web de una clienta algunas entradas no se pueden editar, mostrando la web el error:

Error: An error occurred while running 'mapSelect': Cannot read property 'isPrimary' of undefined
 The error may be correlated with this previous error:
 TypeError: Cannot read property 'isPrimary' of undefined
     at https://patriciamaguet.com/wp-content/plugins/seo-by-rank-math/assets/admin/js/gutenberg.js?ver=1.0.59:1:51125
     at r (https://patriciamaguet.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.19:55:237)
     at g (https://patriciamaguet.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.19:11:415)
     at lo (https://patriciamaguet.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.19:76:27)
     at https://patriciamaguet.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.19:55:256
     at https://patriciamaguet.com/wp-content/plugins/seo-by-rank-math/assets/admin/js/gutenberg.js?ver=1.0.59:1:51073
     at Object.current (https://patriciamaguet.com/wp-includes/js/dist/data.min.js?ver=9a46df5c996f2ab728f28fd0eb9e78bd:2:30276)
     at e (https://patriciamaguet.com/wp-includes/js/dist/data.min.js?ver=9a46df5c996f2ab728f28fd0eb9e78bd:2:29903)
     at https://patriciamaguet.com/wp-includes/js/dist/data.min.js?ver=9a46df5c996f2ab728f28fd0eb9e78bd:2:30012
     at Bh (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:126:456)
 Original stack trace:
     at We (https://patriciamaguet.com/wp-includes/js/dist/data.min.js?ver=9a46df5c996f2ab728f28fd0eb9e78bd:2:29695)
     at https://patriciamaguet.com/wp-includes/js/dist/data.min.js?ver=9a46df5c996f2ab728f28fd0eb9e78bd:2:30251
     at we (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:84:293)
     at He (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:97:464)
     at zj (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:228:406)
     at Th (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152:223)
     at tj (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:152:152)
     at Te (https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:146:151)
     at https://patriciamaguet.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.13.1:61:68
     at unstable_runWithPriority (https://patriciamaguet.com/wp-includes/js/dist/vendor/react.min.js?ver=16.13.1:25:260)

Y la entrada no se puede editar, claro.

¿Qué pasa?

Pues es un problema del plugin Rank Math, que bajo ciertas condiciones (desconocidas) guarda un valor incorrecto en la base de datos y eso hace que al intentar construir la página de edición de esa entrada se genere un trozo de código incorrecto y la página falle, sin dejar mensaje de error en el log de PHP porque es un problema de JS.

Solución

El problema ocurre con el módulo de Schema así que desactivándolo deja de ocurrir, pero claro, lo ideal es una solución de verdad.

Para ello simplemente hay que encontrar la fila díscola en la tabla wp_postmeta y rellenar el campo vacío con un NULL usando phpMyAdmin, por ejemplo.

En mi caso fue sencillo identificar la fila con esta consulta (sabiendo el id de la entrada):

SELECT * FROM `wp_postmeta` WHERE `post_id` = 9837 AND `meta_key` LIKE 'rank_math_schema_%'

Una vez identificada basta con insertar NULL en el campo meta_value y asunto arreglado.

Nota importante

  1. Tocar directamente la base de datos es muy peligroso. Antes de hacer nada acuérdate de hacer una copia de seguridad de la misma.
  2. Si has llegado a este artículo buscando la solución y no tienes demasiada idea en temas de bases de datos y cosas así… quizás deberías buscarte un profesional que te lo haga (pista: Contacto)