Come aumentare il numero di post visualizzati da una tassonomia gerarchica? (ERRORE HTTP 500)

12 ago 2019, 17:19:27
Visualizzazioni: 42
Voti: 0

Ricevo un ERRORE HTTP 500 quando provo a ottenere tutti i post da una tassonomia gerarchica che è la categoria. ERRORE HTTP 500 in WordPress

Ho una pagina e in questa pagina voglio visualizzare tutti i post. Questa pagina e quei post hanno la stessa categoria chiamata ad esempio hello.

Nella pagina ho utilizzato questa query per visualizzare i post dalla categoria che ha questa pagina.

<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  }
                                
                                // Ripristina i dati originali del post
                                wp_reset_postdata();
                            ?>
                        </div>

La query funzionava bene con le altre categorie nelle altre pagine che hanno al massimo 300 post. Ma la categoria hello ha più di 900 post e quando li visualizzo con la stessa query ricevo ERRORE HTTP 500.

La categoria hello è figlia di una categoria chiamata series ma questo non è il motivo del problema, volevo solo chiarire la situazione.

Nota: Quando la categoria hello aveva 500 post la pagina funzionava e i post venivano visualizzati, ma la pagina impiegava più di 3 secondi per caricare. Quindi più post aggiungo alla categoria, più tempo impiega la pagina a caricare e alla fine, se i post diventano troppi, la pagina mi dà ERRORE HTTP 500.

Nota: Ho provato il codice in locale e tutto funzionava senza errori.

Aggiornamento: Ho aggiunto questo codice 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' );

e questo codice 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

Ho aggiunto questi codici sopra per aumentare la memoria, la dimensione di esecuzione e la dimensione del file di upload ecc.

Dopo averli aggiunti ho ricevuto ERRORE 503 invece di ERRORE 500

Maher Aldous
Maher Aldous
119
Commenti

In generale, questo è più un problema di impostazioni PHP che di WordPress, quindi dovresti aumentare le impostazioni PHP per il tempo di esecuzione ecc., ma c'è un limite a quello che puoi fare. Quindi, dal lato WordPress, è necessario fare delle ottimizzazioni. Innanzitutto, potresti considerare l'uso di qualcosa come 'fields' => 'ids', che ti restituisce solo gli ID, riducendo così il carico della query. Ovviamente, dovrai modificare il tuo ciclo di conseguenza. In secondo luogo, quando si ha a che fare con query ad alta intensità di risorse, è consigliabile utilizzare meccanismi di caching, ad esempio i transient. Infine, è davvero necessario caricare tutti i post?

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

Sì, voglio tutti i post perché è come una serie TV con tutti gli episodi

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

Beh, questo non significa che devi caricarli tutti in una volta, potresti ad esempio dividere il processo di caricamento. Comunque, buona fortuna e tanto successo.

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

Sì, ci ho pensato. Penso che caricherò 100 post nel primo caricamento, poi quando la pagina sarà caricata userò WordPress Ajax per caricare gli altri post. Cosa ne pensi?

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

È una buona opzione, ma non dimenticare la cache.

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

sì lo farò e lascerò questa domanda aperta nella speranza che qualcuno abbia una soluzione :)

Maher Aldous Maher Aldous
14 ago 2019 19:31:55
Mostra i restanti 1 commenti