ThemesCorners
Blog
9 menit bacaoleh ThemesCorners

Fitur PHP 8.4 yang Wajib Dipakai Developer WordPress

Property hooks, asymmetric visibility, dan helper array baru — beserta bagaimana masing-masing membersihkan kode WordPress nyata.

PHP 8.4 sudah menjadi versi PHP paling banyak dipakai di managed WordPress hosting sejak akhir 2025, dan 8.5 akan rilis November 2026. Kalau composer.json Anda masih menetapkan "php": ">=7.4", Anda meninggalkan banyak peluang membaikkan keterbacaan dan performa. Tulisan ini membahas empat fitur 8.4 yang benar-benar mengubah cara saya menulis kode WordPress sehari-hari.

1. Property hooks (tak ada lagi getter/setter boilerplate)

Di PHP 8.3 Anda terus-menerus menulis ini di dalam class custom post type:

class Product {
    private string $name;
    public function getName(): string { return $this->name; }
    public function setName(string $value): void {
        $this->name = trim($value);
    }
}

Di PHP 8.4 menjadi sederhana:

class Product {
    public string $name {
        get => $this->name;
        set(string $value) => trim($value);
    }
}

Hook berjalan saat properti dibaca atau ditulis, jadi Anda dapat menormalisasi nilai (contoh trim() di atas), memicu do_action(), atau membaca dari meta tabel — tanpa pemanggil tahu bahwa itu bukan properti biasa.

Kenapa penting untuk WordPress: objek custom post type dan atribut block hampir selalu butuh normalisasi. Property hooks memungkinkan Anda menghapus seluruh lapisan helper WP_*_Repository::get_x().

2. Asymmetric visibility

Berdekatan dengan poin di atas, Anda kini bisa membatasi siapa yang dapat menulis properti tanpa membatasi siapa yang dapat membacanya:

class Order {
    public private(set) string $status = 'pending';
    public function pay(): void { $this->status = 'paid'; }
}

Order::$status dapat dibaca dari mana saja, tetapi hanya bisa ditulis dari dalam class. Satu keyword itu menggantikan belasan kombinasi getStatus() + setter privat.

3. Helper array baru — array_find dan kawan-kawan

PHP 8.4 menambahkan array_find, array_find_key, array_any, dan array_all. Dua yang pertama yang paling sering saya pakai mingguan:

$adminUser = array_find(
    get_users(['role' => 'administrator']),
    fn (\WP_User $u) => str_ends_with($u->user_email, '@example.com')
);

Sebelum 8.4 ini adalah foreach dengan return awal, atau array_filter(...)[0] ?? null yang rapuh. Sekarang satu baris dan terbaca seperti bahasa Inggris.

4. Attribute #[\Deprecated]

Menandai sebuah helper sebagai deprecated akhirnya mendapat dukungan tingkat bahasa:

#[\Deprecated(message: 'Gunakan Theme::getPalette() sebagai gantinya', since: '2.0')]
function themescorners_get_colors(): array { /* ... */ }

Ini memunculkan notice E_USER_DEPRECATED sesungguhnya, terdeteksi IDE, dan bekerja dengan wp_debug_log(). Pakai setiap kali Anda mengubah API publik — para pengguna tema Anda akan berterima kasih.

Checklist migrasi

Kalau Anda penulis tema atau plugin yang menaikkan minimum ke PHP 8.4:

  1. Perbarui composer.json: "php": "^8.4".
  2. Perbarui header Requires PHP di style.css / file utama plugin.
  3. Jalankan composer require --dev rector/rector dan terapkan set PHP 8.4 — banyak hal di atas otomatis ditulis ulang.
  4. Jalankan PHPUnit terhadap 8.4 di CI sebelum rilis; PHPUnit 11 sudah menambahkan dukungan yang sesuai.
  5. Naikkan "Tested up to" ke rilis WordPress terkini. WordPress 6.8 (April 2026) adalah target aman saat tulisan ini dibuat.

Catatan tentang hosting

Hampir semua managed WordPress host (Kinsta, WP Engine, Pressable, Cloudways, SiteGround) sekarang menawarkan PHP 8.4 dan memungkinkan switch dengan satu klik. Kalau hosting Anda masih di 8.1 atau 8.2 di 2026 — gantilah hosting. Selisih performa antara 8.1 dan 8.4 untuk beban kerja WordPress dunia nyata konsisten 8–12% dalam benchmark kami.

Artikel terkait