@toscho meninggalkan komentar untuk jawaban ini yang membuat saya berpikir lagi. Seberapa besar kepercayaan yang harus kita miliki dalam lingkup global, khususnya mengenai post global seperti $post
?
Terus? Variabel global dapat ditimpa dari semua orang sebelum cek Anda berjalan. Itulah poin dari variabel global: akses global.
$post
misalnya tentunya adalah salah satu dari global yang sebagian besar dimodifikasi baik di dalam tema itu sendiri atau oleh plugin. Namun itu juga global yang paling umum digunakan dalam aplikasi lain dalam template yang diberikan, misalnya, untuk mengatur posting terkait.
Dari menjawab (dan mengomentari) beberapa posting dengan masalah khusus yang disebabkan oleh penggunaan permintaan khusus , sangat menonjol bahwa sebagian besar masalah disebabkan oleh permintaan kustom yang tidak diatur ulang (permintaan kustom mengubah global yang ditetapkan oleh permintaan utama).
Dari sini, jelas bahwa $post
itu tidak dapat diandalkan. Sepotong kode yang ditulis dengan buruk yang menggunakan kueri khusus dapat mengubah $post
global, yang pada gilirannya akan merusak sesuatu (seperti posting terkait).
Hanya segelintir pengembang WordPress yang benar-benar berpengetahuan luas dalam inti pekerjaan inti dan tahu apa yang harus dihindari dan apa yang tidak. Populasi pengguna yang lebih besar tidak tahu bagaimana inti WordPress beroperasi.
Mereka hanya mengunduh tema dan menginstal plugin untuk melakukan apa yang diperlukan atau bahkan hanya menyalin kode dari tutorial. Katakanlah mereka memasang plugin yang ditulis dengan buruk yang memecah posting terkait pada posting tunggal mereka, bagaimana mereka tahu apa yang menyebabkannya? Apakah mereka dapat mengatasinya sendiri atau akan menjadi orang keseratus yang menulis email kepada penulis tema tentang masalah ini, atau memposting pertanyaan di situs ini?
Pertanyaan saya: Bagaimana Anda melindungi dari masalah-masalah yang disebabkan oleh kode impor lainnya ketika global like $post
sangat tidak dapat diandalkan? Haruskah kita menggunakan global $post
sama sekali? Apa saja alternatifnya?
Hanya untuk berbagi pikiran saya di sini sebelum saya menyimpulkan: Saya telah memikirkan (dan melihat dalam beberapa tema dan plugin juga) baik menggunakan wp_reset_postdata()
atau wp_reset_query()
sebelum memanfaatkan $post
, untuk memastikan bahwa global sedang diatur ulang ke kueri utama $post
. Tetapi mengapa saya harus mengembang kode saya di tema saya karena orang lain tidak benar kode plugin-nya? Dan jika seseorang benar mengatur ulang kueri khusus mereka, operasi ini dijalankan untuk kedua kalinya, yang tidak baik.
Metode kedua yang saya pikirkan adalah memanfaatkan $wp_query
dan kemudian menggunakan metode-metodenya, seperti $wp_query->post
.
Setiap pemikiran tentang ini akan dihargai.