Jadi, saya mengalami apa yang tampak seperti masalah penggunaan RAM WP dan saya sedang mencari solusi.
Satu-satunya tempat saya benar-benar mengalami masalah ini di situs saya adalah dengan halaman Peta Situs yang saya coba isi, tetapi solusi untuk masalah ini dapat diterapkan secara universal dan menghemat penggunaan RAM di seluruh situs.
Pada dasarnya, halaman Peta Situs ini yang saya miliki adalah daftar semua posts
dan pages
di situs saya. Satu-satunya elemen variabel $ post yang perlu saya akses di halaman ini adalah judul dan permalink. Sayangnya, kueri yang saya gunakan mengembalikan semua posting dengan semua informasi di masing-masing variabel $ post mereka.
Berikut ini adalah contoh dari kueri yang saya gunakan pada halaman Peta Situs ini untuk satu custom-post-type
"produk" bernama dengan taksonomi khusus "suplemen" dan istilah "semua suplemen". Halaman Peta Situs saya memiliki beberapa pertanyaan seperti itu, tetapi untuk tujuan penjelasan saya hanya menyertakan kode untuk permintaan tunggal ini.
$varArray= array(
'post_type' => 'products',
'post_status' => 'publish',
'supplements' => 'all-supplements',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC'
);
$myProducts= new WP_Query($varArray);
Sebagian besar informasi yang disimpan dalam variabel $ post (untuk situs saya, dan saya menduga tren ini terlihat untuk penggunaan umum) ditemukan dalam "konten" Penggunaan RAM yang khas untuk halaman Peta Situs saya adalah ~ 140MB (dilaporkan oleh Debug Bar), sedangkan penggunaan untuk halaman khas lainnya di situs saya adalah 50-60MB. Perbedaan besar. Kemarin halaman Peta Situs berhenti bekerja (WSOD), dan untuk memperbaikinya saya harus meningkatkan jumlah maksimum RAM yang dapat digunakan WP. Jadi saya meningkatkan keseluruhan sumber daya sistem yang diperlukan karena satu halaman.
Jadi, saya sampai pada pertanyaan saya.
Apakah ada jalur / opsi di suatu tempat di dalam Wordpress yang saya lewatkan yang akan mengambil posts
/ pages
seperti permintaan normal, tetapi TIDAK mendapatkan konten untuk posting yang diambil?
Atau, sebagai alternatif, apakah ada cara yang lebih mudah bagi saya untuk hanya mengambil elemen tertentu dalam kueri yang diberikan (Judul / Permaklink / Slug / etc ...) daripada mendapatkan seluruh variabel $ post shebang?
Sepertinya saya bahwa untuk banyak aplikasi WP, satu-satunya tempat yang "isi" dari post / page biasanya akan diperlukan adalah pada yang page
atau post
halaman (jelas ada pengecualian di sini), dan memiliki akses ke konten penuh untuk posting / halaman diambil oleh permintaan pada halaman lain adalah pembunuhan sederhana yang sederhana. Jika ada cara untuk menghindari memuat konten lengkap untuk halaman daftar posting, maka sejumlah besar penggunaan RAM dapat dihemat.
Bantuan apa pun akan dihargai.
sumber
Anda dapat mencoba menambahkan ini ke array Anda:
Tampaknya cukup jelas, tetapi pada dasarnya Anda tidak meminta semua variabel posting dan hanya hal-hal yang Anda butuhkan.
sumber
Programmer Dan, mah man!
Mari kita mulai
SELECT
permintaan kustom menggunakan$wpdb
global. Codex memiliki entri bagus tentang Menampilkan Posting menggunakan Kueri Pilih Kustom . Jika Anda memanfaatkansetup_postdata()
Anda dapat mengulangi hasil seolah-olah Anda sedang duduk di loop Wordpress standar:Query ini hanya menarik ID, Judul, dan GUID posting (digunakan untuk menentukan permalink posting) sementara benar-benar mengabaikan yang lainnya. Lebih jauh lagi, itu memerintahkan hasil pertama kali pada
post_type
saat itupost_title
, meskipun Anda mungkin ingin menggunakan beberapa permintaan untuk memisahkan jenis posting Anda (secara teoritis pada hit kinerja kecil).Jelas Anda mungkin ingin berhenti menggunakan
setup_postdata()
dan hanya mengulang$sitemap_nodes
, atau mengutak-atik kueri untuk mendapatkan hasil yang Anda butuhkan.Jika Anda benar-benar memanggil
setup_postdata()
dan mengaktifkan mode debug, panggilan tersebut kemungkinan besar akan mengeluarkan pemberitahuan dari kiri dan kanan tentang (yang dengan sengaja) informasi yang hilang. Anda mungkin ingin melempar@
sebelum pemanggilan fungsi untuk menekan mereka setelah Anda mengonfirmasi bahwa permintaan khusus Anda berfungsi dengan baik.Tetapi ini seharusnya membantu Anda memulai! Anda bisa merujuk ke diagram database berikut (dari halaman Deskripsi Basis Data pada Codex) untuk menemukan bidang yang perlu Anda kueri:
sumber
WP_Query memiliki parameter "bidang kembali" yang terlihat seperti ini:
Ketika digunakan dengan cara ini, WP_Query hanya mengembalikan ID posting, bukan seluruh objek posting. Kemudian Anda hanya dapat menggunakan
get_permalink()
,get_the_title()
dan fungsi berbagai macam WordPress lainnya untuk mengambil konten Anda berdasarkan pos ID.sumber
get_post()
di atasnya untuk mengambil data lengkap dan dengan demikian sepenuhnya mengalahkan tujuan pengambilan ID saja.