Cómo aumentar el número de posts mostrados por una taxonomía jerárquica (ERROR HTTP 500)

12 ago 2019, 17:19:27
Vistas: 42
Votos: 0

Recibí un ERROR HTTP 500 cuando intenté obtener todos los posts de una taxonomía jerárquica que es la categoría. Error HTTP 500 en WordPress

Tengo una página y en esta página quiero mostrar todos los posts. Esta página y esos posts tienen la misma categoría llamada por ejemplo "hello".

En la página usé esta consulta para mostrar los posts de la categoría que tiene esta página:

<div class="box">
                            <?php
                                $category = get_the_category();
                                if($category->category_parent > 0){
                                    echo $category[0]->cat_name;
                                }
                                
                                $args = array(
                                    'post_type' => 'post',
                                    'tax_query' => array(
                                        'relation' => 'AND',
                                        array(
                                            'taxonomy' => 'category',
                                            'field'    => 'slug',
                                            'terms'    => array( $category[0]->cat_name ),
                                        ),
                                        array(
                                            'taxonomy' => 'post_format',
                                            'field'    => 'slug',
                                            'terms'    => array( 'post-format-video' ),
                                        ),
                                    ),
                                    'order'   => 'ASC',
                                    'nopaging' => true,
                                );
                                
                                $the_query = new WP_Query( $args );
                                
                                while ( $the_query->have_posts() ) {
                                        $the_query->the_post();?>
                                        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><h3><?php the_title(); ?></h3></a>
                                <?php  }
                                
                                // Restaurar datos originales del Post
                                wp_reset_postdata();
                            ?>
                        </div>

La consulta funcionó bien con otras categorías en otras páginas que tienen un máximo de 300 posts. Pero la categoría hello tiene más de 900 posts y cuando los muestro con la misma consulta obtengo ERROR HTTP 500.

La categoría hello es hija de una categoría llamada series pero esta no es la razón del problema, solo quería aclararlo.

Nota: Cuando la categoría hello tenía 500 posts la página funcionaba y los posts se mostraban, pero la página tardaba más de 3 segundos en cargar. Así que cuantos más posts añado a la categoría, más tiempo necesita la página para cargar y al final si los posts se vuelven demasiados, la página me da ERROR HTTP 500.

Nota: Probé el código en localhost y todo funcionó sin errores.

Actualización: Añadí este código a wp-config

@ini_set( 'upload_max_filesize' , '99999M' );
@ini_set( 'post_max_size', '99999M');
@ini_set( 'memory_limit', '999999M' );
@ini_set( 'max_execution_time', '300000' );
@ini_set( 'max_input_time', '300000' );

y este código a .htaccess

php_value upload_max_filesize 99999M
php_value post_max_size 99999M
php_value memory_limit 999999M
php_value max_execution_time 300000
php_value max_input_time 300000

Añadí estos códigos para aumentar la memoria, tamaño de ejecución y tamaño de archivo de subida, etc.

Después de añadirlos obtuve ERROR 503 en lugar de ERROR 500

Comentarios

En términos generales, esto es más un problema de configuración de PHP que de WordPress, por lo que deberías aumentar los ajustes de PHP para el tiempo de ejecución, etc., pero hay un límite en lo que puedes hacer. Así que en el lado de WordPress se deben realizar optimizaciones. En primer lugar, podrías considerar usar algo como 'fields' => 'ids', lo que te daría solo los IDs, pero reduciría la carga de la consulta. Por supuesto, tienes que modificar tu bucle en consecuencia. En segundo lugar, cuando se trata de consultas intensivas en recursos, es recomendable utilizar mecanismos de caché, por ejemplo, usando transients. Por último, ¿realmente es necesario cargar todas las publicaciones?

Nicolai Grossherr Nicolai Grossherr
13 ago 2019 09:59:23

Sí, quiero todas las publicaciones porque es como un programa de televisión con todos los episodios

Maher Aldous Maher Aldous
13 ago 2019 15:42:06

Bueno, eso no significa que tengas que cargarlos todos de una vez, podrías, por ejemplo, dividir el proceso de carga. De todos modos, buena suerte y mucho éxito.

Nicolai Grossherr Nicolai Grossherr
13 ago 2019 16:05:01

Sí, pensé en eso. Creo que cargaré 100 publicaciones en la primera carga y luego, cuando la página esté cargada, usaré ajax de WordPress para cargar las otras publicaciones. ¿Qué opinas de eso?

Maher Aldous Maher Aldous
13 ago 2019 17:14:33

Es una buena opción, no olvides el caché.

Nicolai Grossherr Nicolai Grossherr
13 ago 2019 19:50:42

Sí, lo haré y dejaré esta pregunta abierta con la esperanza de que alguien tenga una solución :)

Maher Aldous Maher Aldous
14 ago 2019 19:31:55
Mostrar los 1 comentarios restantes