Beberapa waktu yang lalu, saya ingin mengambil isi konten artikel dari sebuah halaman WordPress. Konten tersebut nantinya akan digunakan sebagai konten news aggregator. Masalahnya, konten yang saya butuhkan mempunyai dua syarat.

Syarat pertama harus mengandung elemen paragraf HTML untuk membedakan satu paragraf dengan paragraf yang lain. Syarat yang kedua adalah tidak boleh mengandung elemen HTML lain, selain elemen paragraf.

Bila kedua syarat tersebut diabaikan, maka sebetulnya WordPress sudah menyiapkan sebuah fungsi PHP yang tinggal pakai saja, yaitu fungsi get_the_content(). Setelah coba menjalankan fungsi tersebut, ternyata outputnya masih menyisakan elemen <span>. Selain itu, jeda antarparagraf juga masih berupa jeda baris ganda atau spasi ganti baris.

Contoh output text ketika menjalankan fungsi get_the_content():

<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. 

There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. 

All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</span>

Beberapa kali mencoba dengan beberapa alternatif fungsi untuk mengatasi masalah tersebut masih belum berhasil. Termasuk mengacak-acak solusi yang ditawarkan pada situsweb Stack Overflow. Beberapa ide yang sempat terbesit saat itu yaitu dengan memanipulasi teks atau karakter, kemudian juga dengan memanfaatkan fungsi regex (regular expression) PHP.

Saya menyerah menggunakan ide yang pertama. Sampai kemudian nyasar ke web manual PHP dan W3Schools. PHP punya sebuah fungsi regex bernama preg_replace(). Nah, fungsi ini mempunyai kemampuan untuk melakukan pencarian ekspresi reguler dari sebuah teks, sekaligus mengganti ekspresi tersebut dengan karakter lain.

Fungsi preg_replace() bisa berjalan pada PHP 4, PHP 5, PHP 7, dan PHP 8. Syntax umum penggunaan fungsi ini yaitu sebagai berikut.


preg_replace(patterns, replacements, input, limit, count)

Informasi lebih lengkap mengenai detail penggunaan fungsi ini bisa dilihat pada halaman ini. Pada dasarnya, penulisan variabel-variabel regex mengikuti aturan-aturan yang ada di sini.

Kembali lagi kasus di awal tulisan. Pada kasus ini, tujuan fungsi tersebut tidak lain adalah mencari elemen pembuka <span> dan elemen penutup </span>, lalu mengganti elemen tersebut dengan karakter kosong. Sampai di sini seharusnya elemen tersebut sudah bisa hilang.

Selanjutnya bagaimana agar jeda baris ganda tersebut bisa hilang dan digantikan oleh elemen <p> dan </p> di setiap awal dan akhir paragraf? Apakah masih perlu menggunakan fungsi regex? Tentu saja tidak. Jika tetap menggunakan regex, justru akan sangat menyulitkan, karena fungsi regex hanya akan bekerja jika elemen teks yang kita cari bisa kita definisikan, seperti pada kasus menghilangkan <span> dan </span> tadi.

WordPress ternyata juga sudah mengantisipasi problem tersebut dengan sebuah fungsi bernama wpautop(). Fungsi tersebut berguna untuk mengganti jeda baris ganda dengan elemen paragraf HTML.

Dengan langkah seperti itu, maka output teks di atas menjadi seperti yang diharapkan:

<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p><p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.</p><p>All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>

Berikut adalah script PHP lengkap untuk menghilangkan elemen HTML, sekaligus mengganti jeda baris ganda dengan elemen paragraf HTML.

<?php 

   // $konten adalah variabel yang digunakan untuk menyimpan teks yang diperoleh dari fungsi get_the_content()

   $konten = get_the_content();
   $konten = preg_replace('/<span[^>]+\>|<\/span>/i', '', $konten);
   echo wpautop( $konten);

?>

 


Komentar
Unlimited Hosting WordPress Developer Persona

You can subscribe to my newsletter to get updates (no spam).

powered by TinyLetter