Pulpit nawigacyjny WordPress, wyświetlanie wyników CPT w 504

10

Utworzyłem niestandardowy typ postu z niestandardową taksonomią. Mam około 1500 postów, z których wszystkie są przypisane do pewnego rodzaju terminu systematyki ... niektóre są przypisane do ponad 200 terminów.

Zauważyłem, że z poziomu pulpitu wyświetlenie niestandardowych typów postów zajmuje bardzo dużo czasu, w większości przypadków powodując przekroczenie limitu czasu bramy 504.

Odpowiadanie na te posty z interfejsu jest w porządku i nie mam z tym żadnych problemów.

Rozumiem, że kiedy pulpit nawigacyjny próbuje wyświetlić te niestandardowe typy postów, próbuje wyciągnąć wszystkie informacje przypisane do każdego postu, zanim pokaże wszystko.

Mam ten zestaw instalacyjny WP, aby móc zużywać tyle pamięci, ile potrzeba (memory_limit = -1), jak badałem, niektórzy twierdzili, że może to być związane z pamięcią.

Czy jest coś, co mogę zrobić, aby zwiększyć wydajność tego zapytania ... może nie załadować wszystkich relacji terminologii taksonomii postu, dopóki nie edytujesz postu?

Błędy po zwiększeniu WP_MEMORY_LIMITz 1 Gb do 2 Gb:

WordPress database error: [MySQL client ran out of memory]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('locations') AND tr.object_id IN

WordPress database error: [Lost connection to MySQL server during query]
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN

WordPress database error: [MySQL server has gone away]
SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM wp_posts WHERE post_type = 'services' ORDER BY post_date DESC
NW Tech
źródło
FWIW, zwiększyłem pamięć mojej witryny WordPress do 2 Gb, co pozwoliło mi zobaczyć posty, ale dostaję mnóstwo błędów (dodanych do pierwotnego pytania). Czy można coś zrobić, aby zapytanie na zapleczu nie było tak ciężkie?
NW Tech
Czy wspominając o wyświetlaniu niestandardowych typów postów z pulpitu nawigacyjnego, masz na myśli przeglądanie listy postów znajdujących się w wp-admin/edit.php?post_type=services?
bosco,
@ bosco To prawda.
NW Tech
To strasznie dużo pamięci do przypisania do Wordpress. Czy korzystasz z hostingu współdzielonego, serwera VPS lub serwera dedykowanego? Mogą tu być głębsze podstawowe problemy. Czy używasz Apache lub innego serwera WWW, takiego jak Nginx (być może oba)?
Dwayne Charrington
To jest nowy serwer (dv) z MediaTemple. Panel sterowania to Plesk, a na serwerze działa CentOS z Apache i Nginx. Nie chcę przypisywać tak dużej ilości pamięci, ale wydawało mi się, że to jedyny sposób na uzyskanie jakichkolwiek rezultatów.
NW Tech

Odpowiedzi:

4

Warunki CPT i taksonomii są tworzone za pomocą wtyczki. Udało mi się zmniejszyć zapytanie, dodając następujące elementy do mojej wtyczki:

add_action( 'pre_get_posts', 'nwtd_lpfs_custom_admin_query' );
function nwtd_lpfs_custom_admin_query( $query ) {
    if( !is_admin() && !$query->is_main_query() ) {
         return;
     }
     if( is_post_type_archive( 'services' ) ) {
          $query->set('no_found_rows', 1 );
          $query->set('update_post_meta_cache', 0 );
          $query->set('update_post_term_cache', 0 );
     }
}

Obecnie mam ponad 700 postów związanych z ponad 1500 kategoriami taksonomii i wszystko działa świetnie. Wpisy pojawiają się niemal natychmiast.

** Nie napisałem tego kodu. Ktoś, z kim pracuję bezpośrednio, a który nie należy do społeczności WordPress Answers, dostarczył kod - być może może pomóc komuś innemu lub ktoś inny może go rozwinąć, aby był bardziej wydajny. **

NW Tech
źródło