
algoepico
1
Eta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario popular!
Suscripción a IA
Buenos días,
Un cliente comenzó repentinamente a sufrir un problema con su web: con no demasiadas visitas, su web se merendaba todo el procesador y la memoria RAM asignados por el hosting a su web. Tras descartar un problema en el hosting o que su web estuviese infectada con algún troyano, finalmente vi que el causante del problema era el famoso clúster del Orbital Theme. Así descubrí un bug que lleva ahí desde la primera versión (y os incluyo la solución).
No en todos los casos, pero a veces se daba la situación de que, publicando un clúster que incluía el extracto de las entradas y teniendo estas entradas a su vez otro clúster, se producía un bucle infinito (esto consumía todos los recursos y acababa no solo en error, sino con la página caída).
Corrección simple editando el tema (no recomendado, porque al actualizar se sobreescribirá tu código):
Corrección realizada en el archivo functions.php de un child theme (tema hijo) de Orbital (también podéis meter el código en el plugin "Header Footer Code Manager"):
Lo que hace el código es cortar el bucle de raíz. Procesa los clústeres de la página que está siendo visitada, pero ignora los de las páginas que están dentro del clúster, ya que es absurdo procesarlos (con sus consecuentes consultas a la BD) cuando no se van a mostrar. Independientemente de que tengas o no el problema con los bucles infinitos, esto ahorra consultas innecesarias a la base de datos.
He escrito al equipo que se está encargando ahora de su desarrollo, para hacerles ver el problema e indicarles la solución. A ver si hacen caso y así lo dejan solucionado en el propio tema, sin tener que meter nosotros un "parche". Pero, por si acaso, dejo por aquí la solución. Ya que le sirvió a mi cliente, si le resulta de utilidad también a algún forero, bienvenido sea.
Un saludo
Un cliente comenzó repentinamente a sufrir un problema con su web: con no demasiadas visitas, su web se merendaba todo el procesador y la memoria RAM asignados por el hosting a su web. Tras descartar un problema en el hosting o que su web estuviese infectada con algún troyano, finalmente vi que el causante del problema era el famoso clúster del Orbital Theme. Así descubrí un bug que lleva ahí desde la primera versión (y os incluyo la solución).
No en todos los casos, pero a veces se daba la situación de que, publicando un clúster que incluía el extracto de las entradas y teniendo estas entradas a su vez otro clúster, se producía un bucle infinito (esto consumía todos los recursos y acababa no solo en error, sino con la página caída).
Corrección simple editando el tema (no recomendado, porque al actualizar se sobreescribirá tu código):
PHP:
// Archivo: inc/shortcodes.php
// Función: function orbital_cluster_shortcode, al comienzo
if ( ! isset( $GLOBALS[ 'orbital_cluster_parent_id' ] ) )
$GLOBALS[ 'orbital_cluster_parent_id' ] = get_the_ID();
if ( $GLOBALS[ 'orbital_cluster_parent_id' ] != get_the_ID() )
return ob_get_clean();
Corrección realizada en el archivo functions.php de un child theme (tema hijo) de Orbital (también podéis meter el código en el plugin "Header Footer Code Manager"):
PHP:
/**
* Avoid Orbital Theme cluster infinite loop bug.
*/
if ( !function_exists( 'orbital_cluster_shortcode_avoid_infinite_loop' ) ) {
function orbital_cluster_shortcode_avoid_infinite_loop( $atts ) {
if ( ! isset( $GLOBALS[ 'orbital_cluster_parent_id' ] ) )
$GLOBALS[ 'orbital_cluster_parent_id' ] = get_the_ID();
// Avoid recursive iteration
return $GLOBALS[ 'orbital_cluster_parent_id' ] == get_the_ID() ? orbital_cluster_shortcode( $atts ) : FALSE;
}
}
add_action( 'init', function() {
remove_shortcode( 'orbital_cluster' );
add_shortcode( 'orbital_cluster', 'orbital_cluster_shortcode_avoid_infinite_loop' );
}, 10 );
Lo que hace el código es cortar el bucle de raíz. Procesa los clústeres de la página que está siendo visitada, pero ignora los de las páginas que están dentro del clúster, ya que es absurdo procesarlos (con sus consecuentes consultas a la BD) cuando no se van a mostrar. Independientemente de que tengas o no el problema con los bucles infinitos, esto ahorra consultas innecesarias a la base de datos.
He escrito al equipo que se está encargando ahora de su desarrollo, para hacerles ver el problema e indicarles la solución. A ver si hacen caso y así lo dejan solucionado en el propio tema, sin tener que meter nosotros un "parche". Pero, por si acaso, dejo por aquí la solución. Ya que le sirvió a mi cliente, si le resulta de utilidad también a algún forero, bienvenido sea.
Un saludo