Cara Menggunakan Tag Bersyarat di WordPress
Diterbitkan: 2020-06-09Salah satu hal yang paling saya sukai dari WordPress adalah ia menyertakan banyak fungsi yang sangat menyederhanakan pekerjaan kita sebagai pengembang. Misalnya, pertimbangkan fungsi seperti esc_attr , yang menghindari teks sehingga dapat ditambahkan dengan aman dalam atribut tag HTML, atau esc_html , yang menghindari teks sehingga dapat disertakan dengan aman di halaman HTML. Atau lihat beberapa fungsi yang kami miliki untuk membersihkan data yang kami terima dari pengguna: sanitize_text_field , sanitize_textarea_field atau sanitize_email . Anda begitu terbiasa dengan fungsi-fungsi yang terdefinisi dengan baik ini sehingga Anda benar-benar merindukannya ketika Anda harus mengembangkan apa pun di luar ranah WordPress dan menemukan bahwa mereka tidak lagi tersedia!
Koleksi fungsi yang kami miliki saat kami mengembangkan di WordPress sangat banyak. Dan semakin akrab kita dengan mereka, semakin mudah untuk menulis kode berkualitas tinggi.
Hari ini saya ingin memberi tahu Anda tentang tag kondisional di WordPress: apa itu, bagaimana menggunakannya, apa yang bisa menyesatkan tentang mereka, dan mengapa mereka sangat berguna. Jika Anda seorang pengembang plugin atau tema dan Anda belum mengetahuinya, jangan lewatkan posting ini.
Apa itu Tag Bersyarat WordPress?
Tag bersyarat adalah fungsi yang didefinisikan di WordPress yang hasilnya adalah nilai boolean (yaitu true atau false ). Ini adalah fungsi yang dapat kita gunakan baik di plugin dan tema untuk membuat keputusan bersyarat berdasarkan konten yang akan kita render.
Apa yang membuat tag kondisional hebat adalah, secara umum, namanya cukup jelas dan menghasilkan kode yang sangat mudah dimengerti. Misalnya, jika Anda menggunakan tag kondisional is_sticky di plugin Anda, itu akan mengembalikan nilai true dengan jelas jika, saat berada di dalam loop WordPress, kami sedang memproses postingan yang lengket . Tidak diragukan lagi tentang semantiknya, bukan?
Sebelum kita mulai dengan beberapa contoh, harap diingat bahwa tag bersyarat hanya tersedia setelah WordPress menentukan konten apa yang diminta pengunjung. Jika kita mencoba menggunakannya sebelumnya, hasilnya akan selalu false . Dengan kata lain, kita hanya dapat menggunakannya setelah tindakan posts_selection telah berjalan.
Tag Bersyarat Paling Umum
Sebagian besar tag kondisional di WordPress dimulai dengan is_ , karena jawaban untuk pertanyaan seperti “apakah bla bla?” adalah nilai boolean: baik "ya" atau "tidak". Namun, sayangnya, kriteria ini tidak selalu diikuti (seperti yang akan kita lihat di bawah).
Ada banyak tag kondisional dalam WordPress yang akan Anda kenal saat Anda membutuhkannya. Tetapi ada beberapa yang sangat umum dan semakin cepat Anda mengenalnya, semakin baik. Jadi mari kita lihat lebih dekat mereka:
-
is_single. Ini memeriksa apakah elemen saat ini adalah posting WordPress atau turunan dari jenis posting khusus lainnya (seperti, misalnya, produk WooCommerce). -
is_page. Ini memeriksa apakah elemen saat ini adalah halaman WordPress. -
is_attachment. Ini memeriksa apakah elemen saat ini adalah lampiran. Lampiran adalah file yang Anda unggah ke Pustaka Media Anda, seperti gambar, video, file, dll. -
is_singular. Ia memeriksa apakah salah satu dari tiga fungsi sebelumnyatrue. Artinya, ia memeriksa apakah elemen saat ini adalah posting, halaman, lampiran, atau jenis posting lainnya. -
comments_open. Ini mengembalikantruejika pengunjung dapat mengomentari elemen saat ini. Melihat? Di sini Anda memiliki contoh di mana tag kondisional tidak dimulai denganis_. -
is_category. Ini memeriksa apakah kita sedang melihat halaman arsip kategori. -
in_category. Ini mengembalikan true jika posting saat ini dalam kategori yang diberikan. -
is_tag. Ini memeriksa apakah kita sedang melihat halaman arsip tag. -
has_tag. Ini memeriksa apakah posting saat ini diberi tag menggunakan tag yang ditentukan. -
is_main_query. Ini memeriksa apakah kita berada di loop utama WordPress.
Tahukah Anda bahwa ada tag kondisional yang bisa menyesatkan?
Ada beberapa kasus di mana tag kondisional memiliki nama yang dapat membuat kita bingung karena apa yang tampaknya dievaluasi dan apa yang sebenarnya dievaluasi adalah hal yang berbeda:
-
is_admin. Anda mungkin berpikir bahwa fungsi ini memeriksa apakah pengguna saat ini adalah administrator, bukan? Salah! Ini memeriksa apakah kita berada di halaman di dalam Dasbor WordPress (dan hasilnya akan menjaditrue) atau di front-end (yaitu,false). -
is_home. Saya dulu berpikir bahwa fungsi ini memeriksa apakah halaman saat ini adalah halaman beranda Anda. Misalnya, di situs web kami, itu adalahhttps://neliosoftware.com. Tapi sayangnya, tidak demikian. WordPress lahir sebagai platform blogging dan saya pikir ini adalah contoh dari beberapa "kode lama".is_homeadalah fungsi bersyarat yang memeriksa apakah halaman saat ini adalah halaman Blog Anda. Jadi, misalnya, jika Anda menggunakan pengaturan default WordPress,is_homememang mengembalikantrueketika pengunjung berada di halaman beranda (https://yourweb.com), karena halaman itu menampilkan posting blog terbaru Anda. Tetapi jika Anda mengatur halaman blog Anda ke sesuatu yang lain (sepertihttps://yourweb.com/blog), makais_homeakan menjaditrueketika pengunjung memintahttps://yourweb.com/blogdanfalsesebaliknya. -
is_front_page. Dan ini adalah tag kondisional yang akan memberi tahu Anda saat pengunjung berada di “halaman beranda”. -
is_dynamic_sidebar. Fungsi ini memeriksa apakah tema Anda memiliki satu atau lebih bilah sisi widget dan, jika ya, akan mengembalikan nilaitruejika setidaknya salah satu bilah sisi tersebut tidak kosong.
Parameterisasi Tag Bersyarat
Meskipun sebagian besar tag kondisional adalah fungsi yang dapat dipanggil tanpa parameter, banyak di antaranya mendukung parameter. Jika kita menggunakannya, kita bisa lebih spesifik tentang kriteria yang harus dipenuhi oleh postingan saat ini. Dan mereka melakukan ini dengan cara yang cukup logis.

Bergantung pada fungsi spesifik yang kita gunakan, kita mungkin ingin memeriksa apakah elemen saat ini memiliki ID tertentu atau slug tertentu, apakah itu turunan dari jenis posting tertentu, atau bahkan jika memiliki judul tertentu. Contohnya:
-
is_singular( 'product' )memeriksa apakah elemen saat ini adalah product . -
is_page( 'Contact Us' )memeriksa apakah judul halaman saat ini adalah “Hubungi Kami.” Fungsi ini menerima berbagai jenis argumen dan, bergantung pada apa yang Anda berikan, fungsi ini akan memeriksa satu atau lain hal. Misalnya, Anda dapat memeriksa apakah elemen saat ini memiliki ID tertentu atau judul atau siput tertentu. Cukup rapi, ya? Anda bahkan dapat menggunakan daftar sebagai parameter! -
is_single( [ 5, 10, 11 ] )memeriksa apakah ID elemen saat ini adalah 5, 10, atau 11. Ini sangat mirip denganis_page, tetapi, seperti yang kami katakan sebelumnya, ini berfungsi untuk posting selain halaman.
Cara Menggunakan Tag Bersyarat
Mari kita lihat beberapa contoh di mana tag kondisional mungkin berguna.
Menyesuaikan Template
Seperti yang mungkin Anda duga, tag kondisional jelas berguna dalam tema. Jika Anda ingin tema menampilkan satu informasi atau lainnya tergantung pada jenis konten yang dilihat pada waktu tertentu (dan ini adalah sesuatu yang sering ingin kami lakukan), tag kondisional adalah sekutu Anda:
<?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...Ini memungkinkan Anda untuk menggunakan template yang sama untuk berbagai jenis konten dan menyesuaikan masing-masing dengan tag bersyarat.
Aset Bersyarat Enqueuing
Tetapi tag kondisional juga sangat berguna untuk pengembang plugin. Secara khusus, mereka membantu kami memuat bagian dari plugin kami secara kondisional, tergantung pada hasil yang kami dapatkan dari tag kondisional.
Misalnya, bayangkan kita sedang mengembangkan plugin yang menambahkan beberapa jenis fungsi ke posting blog kita. Misalkan fungsi ini mengharuskan kita mengantrekan skrip dan stylesheet ke front-end. Untuk mengantrekan skrip dan gaya di WordPress, kami memiliki filter yang disebut wp_enqueue_scripts :
function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' ); Masalah dengan cuplikan sebelumnya adalah bahwa ia selalu mengantrekan aset kami, apa pun yang diminta pengunjung. Setiap kali wp_enqueue_scripts berjalan (dan itu berlaku di setiap permintaan front-end), fungsi panggilan balik kami akan dipanggil dan skrip serta stylesheet kami akan ditambahkan. Namun kami mengatakan bahwa fitur kami hanya memengaruhi postingan blog, jadi… apakah kami benar-benar perlu selalu mengantrekan aset ini? Tentu saja tidak! Dan kami dapat meningkatkan ini dengan menggunakan tag kondisional yang sesuai:
function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );Singkatnya
Tag Bersyarat WordPress memungkinkan kami menguji berbagai kriteria konten kami dan dengan demikian menyesuaikan apa yang akan terjadi berdasarkan itu. Terlepas dari kesederhanaannya yang ekstrem, mereka adalah fungsi yang sangat berguna yang membuat kode kita lebih mudah dipahami dan efisien.
Saya harap Anda belajar sesuatu hari ini dan, seperti biasa, jika Anda memiliki pertanyaan atau komentar, beri tahu kami di bagian komentar di bawah.
Gambar unggulan oleh Justin Luebke di Unsplash.
