Dashboard WordPress, melihat hasil CPT di 504

10

Saya membuat jenis pos kustom dengan taksonomi kustom. Saya memiliki sekitar 1500 posting yang semuanya ditugaskan untuk semacam istilah taksonomi ... beberapa ditugaskan untuk lebih dari 200 istilah.

Saya perhatikan bahwa dari dasbor, dibutuhkan waktu yang sangat lama untuk melihat jenis posting khusus, sebagian besar waktu menghasilkan 504 Gateway Time-Out.

Meminta posting ini dari front-end baik-baik saja dan saya tidak punya masalah dengan itu.

Saya memahami bahwa ketika dasbor sedang mencoba untuk melihat jenis posting khusus ini, itu mencoba untuk menarik semua informasi yang diberikan untuk setiap posting, sebelum itu menunjukkan semuanya.

Saya memiliki set instalasi WP ini untuk dapat menggunakan memori sebanyak yang diperlukan (memory_limit = -1), seperti yang saya teliti, beberapa mengatakan itu mungkin terkait dengan memori.

Apakah ada sesuatu yang dapat saya lakukan untuk meningkatkan kinerja kueri ini ... mungkin tidak memuat semua hubungan istilah taksonomi dari sebuah posting sampai Anda mengedit posting?

Kesalahan setelah meningkat WP_MEMORY_LIMITdari 1Gb menjadi 2Gb:

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
sumber
FWIW, saya memang meningkatkan memori situs WordPress saya menjadi 2Gb dan itu memungkinkan saya untuk melihat posting, namun saya mendapatkan banyak kesalahan (ditambahkan ke pertanyaan awal). Adakah yang bisa dilakukan untuk membuat kueri di back-end tidak terlalu berat?
NW Tech
Ketika Anda menyebutkan melihat jenis posting khusus dari dashboard, apakah Anda merujuk melihat daftar posting yang terletak di wp-admin/edit.php?post_type=services?
bosco
@ bosco Itu benar.
NW Tech
Itu adalah banyak sekali memori untuk ditugaskan ke Wordpress. Apakah Anda menggunakan hosting bersama, VPS, atau server khusus? Mungkin ada masalah mendasar yang lebih dalam di sini. Apakah Anda menggunakan Apache atau server web lain seperti Nginx (mungkin keduanya)?
Dwayne Charrington
Ini adalah server baru (dv) dengan MediaTemple. Panel kontrol adalah Plesk dan server menjalankan CentOS dengan Apache dan Nginx. Saya tidak ingin menetapkan memori sebanyak ini, tetapi sepertinya ini satu-satunya cara untuk mendapatkan hasil.
NW Tech

Jawaban:

4

Istilah CPT dan taksonomi dibuat melalui plugin. Saya dapat mengurangi kueri dengan menambahkan yang berikut ke plugin saya:

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 );
     }
}

Sampai saat ini, saya memiliki 700+ posting yang terkait dengan 1500+ ketentuan taksonomi dan semuanya berfungsi dengan baik. Posting muncul hampir secara instan.

** Saya tidak menulis kode ini. Seseorang yang bekerja dengan saya secara langsung, yang bukan bagian dari komunitas Jawaban WordPress, memberikan kode - mungkin dapat membantu orang lain, atau orang lain mungkin dapat memperluasnya untuk membuatnya lebih efisien. **

NW Tech
sumber