Descripción del problema
El error se puede observar en el log error de apache para el vhost (error.log) o si se tienen las notificaciones encendidas de wordpress es posible que los errores lleguen vía email.
A continuación se muestran ejemplos de ambas salidas
Email:
Hola! Dado que WordPress 5.2 es una función incorporada que detecta cuándo un plugin o tema causa un error fatal en su sitio y lo notifica con este correo electrónico automatizado. En este caso, WordPress encontro un error con tu tema, Easy Store. Primero, visite su sitio web (https://www.amorcitocorazon.net/) y compruebe si hay problemas visibles. Luego, visite la página donde se detectó el error (https://www.amorcitocorazon.net/wp-login.php) y verifique si hay problemas visibles. Póngase en contacto con su host para obtener ayuda con la investigación de este problema. Si su sitio aparece roto y no puede acceder a su panel de control normalmente, WordPress ahora tiene un "modo de recuperación" especial. Esto le permite iniciar sesión de forma segura en su panel e investigar más a fondo. https://www.amorcitocorazon.net/amor-login/?action=enter_recovery_mode&rm_token=Ep2y2b979QJ6QwJDs0m33K&rm_key=KbLeDZTRVnmFvHlb2ypLrU Para mantener su sitio seguro, este enlace caducará en 1 día. Sin embargo, no se preocupe por eso: se le enviará un nuevo enlace por correo electrónico si el error ocurre nuevamente después de que caduque. Cuando busque ayuda con este problema, es posible que se le solicite la siguiente información: Versión de WordPress 6.1.1 Tema activo: Easy Shop (versión 1.0.3) Plugin actual: (version ) Versión de PHP: 7.4.3 Detalles Del Error ================== Se produjo un error de tipo E_ERROR en la línea 216 del archivo /var/www/clients/client0/web1/web/wp-content/themes/easy-store/inc/woocommerce.php. Mensaje de error: Uncaught Error: Call to a member function get_cart_subtotal() on null in /var/www/clients/client0/web1/web/wp-content/themes/easy-store/inc/woocommerce.php:216 Stack trace: #0 /var/www/clients/client0/web1/web/wp-content/themes/easy-store/inc/woocommerce.php(246): easy_store_woocommerce_cart_link() #1 /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php(308): easy_store_woocommerce_header_cart() #2 /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters() #3 /var/www/clients/client0/web1/web/wp-includes/plugin.php(517): WP_Hook->do_action() #4 /var/www/clients/client0/web1/web/wp-content/themes/easy-store/header.php(89): do_action() #5 /var/www/clients/client0/web1/web/wp-includes/template.php(783): require_once('/var/www/client...') #6 /var/www/clients/client0/web1/web/wp-includes/template.php(718): load_template() #7 /var/www/clients/client0/web1/web/wp-includes/general-template.php(48): locate_template() #8 /var/www/clients/client0/web1/web/wp-content/themes/
Salida del error.log:
[Wed Feb 01 09:50:59.156994 2023] [proxy_fcgi:error] [pid 1779184] [client 187.188.55.133:53244] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to a member function get_cart_contents_count() on null in /var/www/clients/client0/web1/web/wp-content/themes/easy-store/inc/woocommerce.php:217\nStack trace:\n#0 /var/www/clients/client0/web1/web/wp-content/themes/easy-store/inc/woocommerce.php(246): easy_store_woocommerce_cart_link()\n#1 /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php(308): easy_store_woocommerce_header_cart()\n#2 /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters()\n#3 /var/www/clients/client0/web1/web/wp-includes/plugin.php(517): WP_Hook->do_action()\n#4 /var/www/clients/client0/web1/web/wp-content/themes/easy-store/header.php(89): do_action()\n#5 /var/www/clients/client0/web1/web/wp-includes/template.php(783): require_once('/var/www/client...')\n#6 /var/www/clients/client0/web1/web/wp-includes/template.php(718): load_template()\n#7 /var/www/clients/client0/web1/web/wp-includes/general-template.php(48): locate_template()\n#8 /va...
Replicación del problema
Para poder reproducir el problema es necesario entrar al siguiente enlace y estar monitoreando en tiempo real el archivo error.log, de tal manera que podamos entender por que y donde se genera el error.
https://www.amorcitocorazon.net/new/wp-json/wp/v2/posts
Workaround
La línea 216 dice:
<?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?>
debe quedar:
<?php echo wp_kses_data( ( !is_null( WC()->cart ) ? WC()->cart->get_cart_subtotal() : ‘$0.00’ ) ); ?>
La línea 217 dice:
<?php echo wp_kses_data( sprintf( _n( ‘%d item’, ‘%d items’, WC()->cart->get_cart_contents_count(), ‘easy-store’ ), WC()->cart->get_cart_contents_count() ) );?>
y debe quedar:
<?php echo wp_kses_data( sprintf( _n( ‘%d item’, ‘%d items’, ( !is_null( WC()->cart ) ? WC()->cart->get_cart_contents_count() : ‘0’ ), ‘easy-store’ ), ( !is_null( WC()->cart ) ? WC()->cart->get_cart_contents_count() : ‘0’ ) ) );?>
Probar el cambio y monitorear el log.
Es importante mencionar que este cambio, puede ser sobre escrito al actualizar el tema, por lo que después de la actualización, checar el log.
Este error se ha visto en al menos 2 temas por lo que se puede presentar en cualquier otro.