Tip berguna untuk bekerja dengan hook WordPress. Saya tidak pernah menyisihkan uang untuk pendidikan mandiri, dan alasan seperti “sudah terlambat untuk memulai” atau “Saya tidak bisa” tidak dapat saya terima. Definisi Singkat Tindakan

Kaitnya sangat fitur yang berguna di Wordpress. Mereka memungkinkan Anda untuk "mengaitkan" fungsi khusus "di kait" dari fungsi yang ada, sehingga memungkinkan Anda mengubah fungsionalitas Wordpress tanpa membuat perubahan pada file inti mesin. Pada artikel ini, kami menyajikan kepada Anda 10 hook yang sangat berguna dan siap digunakan untuk Wordpress, beserta contoh dan penjelasan kode sumbernya. Untuk mencapai efek tertentu, kita perlu sedikit mengubah prinsipnya Wordpress berfungsi. Beberapa modifikasi perlu dilakukan pada file, yang disebut file inti oleh pengembang - diperlukan agar Wordpress dapat berfungsi dengan baik.
Namun mengubah file inti adalah ide yang buruk: dapat menimbulkan lubang keamanan di blog Anda. Selain itu, semua modifikasi akan hilang segera setelah Anda memperbarui mesin versi baru.
Namun, perluasan fungsionalitas masih diperlukan. Untuk tujuan ini, pengembang membuat Plugin API.
Hooks adalah salah satu blok utama untuk membuat plugin. Hampir setiap plugin menggunakan hooks untuk memperluas fungsionalitas Wordpress CARA MENGGUNAKAN HOOKS DI BLOG ANDA Sampai Anda menulis plugin, Anda harus menulis hooks ke sebuah file fungsi.php. File ini terletak di direktori wp-content/themes/yourtheme(Di mana /tema Anda– direktori tempat topik saat ini berada).
Berikut ini contoh yang menunjukkan cara menghubungkan fungsi kustom Anda ke fungsi mesin inti:
  • add_action( "publish_post" , "myCustomFunction" ) ;
  • Dalam contoh ini, kami menghubungkan fungsi kustom myCustomFunction() ke fungsi kernelpublish_post() . Fungsi myCustomFunction() akan dijalankan setiap kali fungsipublish_post() dijalankan.
    Tentu saja, kita juga dapat menghapus hook menggunakan fungsi remove_action() :

  • hapus_aksi("publikasikan_posting", "FungsiKustomsaya" ) ;
  • 1. NONAKTIFKAN FORMAT OTOMATIS PADA Masalah WORDPRESS. Anda mungkin sudah memperhatikan bahwa tipograf default Wordpress mengubah tanda kutip "lurus" menjadi tanda kutip "kurva" dan membuat perubahan kecil lainnya pada format posting.
    Ini bagus jika blogger memposting konten biasa (artinya teks dan gambar biasa). Tapi beberapa orang memposting kode sumber, sehingga mereka dapat mendiskusikannya nanti, dan mereka akan sangat tidak senang ketika, karena kutipan yang “bengkok” ini, penerjemah atau kompiler memberi mereka pesan tentang solusi kesalahan sintaksis. Cukup tempelkan ke dalam file fungsi.php di bawah kode berikut:
  • fungsi my_formatter($konten) (
  • $konten_baru = "" ;
  • $pattern_full = "((\.*?\))adalah" ;
  • $pattern_contents = "(\(.*?)\)adalah" ;
  • $potongan = preg_split ($pattern_full , $content , - 1 , PREG_SPLIT_DELIM_CAPTURE) ;
  • foreach ($potongan sebagai $potongan) (
  • if (preg_match ($pattern_contents, $piece, $matches)) (
  • $konten_baru .= $cocok [ 1 ] ;
  • ) kalau tidak (
  • $konten_baru .= wptexturize(wpautop($potongan) ) ;
  • kembalikan $konten_baru;
  • hapus_filter("konten_" , "wpautop" ) ;
  • hapus_filter("konten_" , "wptexturize" ) ;
  • add_filter("konten_" , "format_saya" , 99 ) ;
  • Setelah Anda selesai melakukannya, Anda dapat menggunakan tag untuk mencegah teks postingan diformat secara otomatis:

    Teks ini tidak akan diformat secara otomatis. Pertama-tama, kami membuat fungsi yang, berdasarkan ekspresi reguler, menemukan tag di konten postingan Anda.
    Selanjutnya, kita ikat fungsi my_formatter() ke fungsi the_content(), yang berarti fungsi kita dijalankan setiap kali fungsi the_content() dipanggil.
    Untuk menonaktifkan pemformatan otomatis, kami menggunakan fungsi hapus_filter().2. MENENTUKAN BROWSER PENGUNJUNG MENGGUNAKAN Soal HOOKS. Kompatibilitas lintas browser adalah masalah paling umum dalam pengembangan web. Anda akan menghemat banyak waktu dan saraf jika Anda dapat menentukan browser pengguna yang mengunjungi blog Anda, dan kemudian membuat kelas CSS untuk tag body untuk setiap browser. Larutan. Tidak ada yang rumit: cukup tempelkan kode berikut ke dalam file fungsi.php, simpan - selesai!
  • add_filter("kelas_tubuh" , "kelas_tubuh_peramban" ) ;
  • fungsi browser_body_class($kelas) (
  • global $is_lynx , $is_gecko , $is_IE , $is_opera , $is_NS4 , $is_safari , $is_chrome , $is_iphone ;
  • if ($is_lynx) $kelas = "lynx" ;
  • elseif ($is_gecko) $classes = "tokek" ;
  • elseif ($is_opera) $classes = "opera" ;
  • elseif ($is_NS4) $kelas = "ns4" ;
  • elseif ($is_safari) $kelas = "safari" ;
  • elseif ($is_chrome) $classes = "chrome" ;
  • elseif ($is_IE ) $classes = "yaitu" ;
  • lain $kelas = "tidak diketahui" ;
  • if ($is_iphone) $classes = "iphone" ;
  • kembalikan $kelas;
  • Setelah Anda menyimpan file, fungsi tersebut secara otomatis akan menambahkan kelas CSS yang sesuai dengan browser pengguna untuk tag body:

    Penjelasan kode. Wordpress memiliki variabel global yang mengembalikan nilai true jika pengguna menggunakan browser yang sesuai. Jika pengguna menggunakan browser Google Chrome, maka variabel $is_chrome akan menjadi true . Itu sebabnya kami membuat fungsi browser_body_class(). Setelah itu kita lampirkan Fitur Wordpress kelas_tubuh() .3. DEFINISI TEKS DEFAULT DALAM Masalah EDITOR TinyMCE. Banyak blogger hampir selalu menggunakan format yang sama untuk blognya. Postingan di blog WpRecipes.com saya selalu ditampilkan dengan cara yang sama: teks, kode, beberapa teks lagi.
    Anda dapat menghemat banyak waktu dengan mengajari TinyMCE menampilkan beberapa teks secara default. Seperti biasa, solusinya adalah sebuah pengait. Salin kode ke file fungsi.php dan lihat cara kerjanya.
  • add_filter("konten_default" , "konten_editor_saya" ) ;
  • fungsi my_editor_content( $konten ) (
  • $content = "Jika Anda menikmati postingan ini, pastikan untuk berlangganan rss feed saya." ;
  • kembalikan $konten;
  • Penjelasan kode. Kode ini, walaupun sederhana, sangat kuat. Kita cukup membuat fungsi yang mengembalikan teks yang diperlukan (dalam contoh ini, kita mendefinisikan teks yang meminta pengunjung untuk berlangganan RSS feed) dan melampirkannya ke fungsi default_content() Wordpress. Seperti ini.4. KAMI MASUKKAN KONTEN SECARA OTOMATIS SETELAH SETIAP POSTMasalah. Kebanyakan blog menggunakan file untuk menampilkan konten setelah setiap posting. tunggal.php, tapi inilah masalahnya: konten ini tidak akan muncul di RSS feed. Kait akan membantu memperbaiki masalah ini. Semuanya sama - cukup salin kode berikut ke file fungsi.php.
  • fungsi insertFootNote($isi) (
  • $isi .= "" ;
  • $content .= "Menikmati artikel ini?" ;
  • $isi .= "

    Berlangganan RSS feed kami dan jangan pernah melewatkan resep!

    " ;
  • $isi .= "" ;
  • kembalikan $konten;
  • add_filter("the_content" , "insertFootNote" ) ;
  • Penjelasan kode. Inti dari fungsi insertFootNote() sederhana: fungsi ini hanya menggabungkan teks yang diinginkan ke variabel $content, yang menyimpan konten postingan.
    Selanjutnya, kita lampirkan fungsi insertFootNote() ke fungsi the_content().
    Anda melihat kode ini di baris 2:
  • jika (! is_feed() && ! is_home() ) (
  • Jika Anda ingin teks tersebut dimasukkan ke dalam RSS feed, ganti kode sebelumnya dengan ini:

  • jika (! is_home() ) (
  • Itu saja.

    5. NONAKTIFKAN PESAN PERMINTAAN UPDATE DI PANEL KONTROL WORDPRESMasalah. Anda dapat melihat informasi tentang ketersediaan versi baru Wordpress di bagian atas dashboard. Ini adalah hal yang sangat bagus, karena pembaruan menutup lubang keamanan dan memungkinkan Anda menggunakan fitur mesin terbaru. Namun jika blog tersebut bukan milik Anda pribadi, melainkan merupakan proyek salah satu klien, maka memberikan kesempatan kepada klien untuk memperbarui diri bukanlah ide yang baik. Cukup tempelkan kode berikut ke dalam file fungsi.php.
  • jika (! current_user_can("edit_users" ) ) (
  • add_action( "init" , buat_fungsi ( "$a" , "remove_action("init", "wp_version_check");" ) , 2 ) ;
  • add_filter( "pre_option_update_core" , create_function ( "$a" , "return null;" ) ) ;
  • Setelah Anda menyimpan file tersebut fungsi.php, Anda tidak akan melihat pesan tersebut lagi.

    Penjelasan kode. Untuk memulainya, mari kita pastikan itu pengguna saat ini memiliki hak administratif yang memadai untuk memperbarui Wordpress. Setelah kami yakin akan hal ini, kami membuat beberapa kait yang menulis ulang aturan untuk menampilkan pesan di dasbor.6. NONAKTIFKAN Masalah POSTINGAN SIMPAN OTOMATIS. Wordpress secara berkala menyimpan postingan saat dimasukkan. Ini peluang yang berguna, tapi terkadang itu tidak diperlukan. Untuk menonaktifkan penyimpanan otomatis suatu kiriman, cukup buka file tersebut fungsi.php dan paste kode berikut ke dalamnya.
  • fungsi nonaktifkanSimpanOtomatis() (
  • wp_deregister_script("simpan otomatis" ) ;
  • add_action( "wp_print_scripts" , "disableAutoSave" ) ;
  • Penjelasan kode. Sekali lagi, tidak ada yang rumit: kita cukup membuat fungsi yang menonaktifkan penyimpanan otomatis dan mengikatnya ke fungsi Wordpress wp_print_scripts() .7. HILANGKAN KONTEN BERULANG PADA HALAMAN DENGAN KOMENTARMasalah. Konten duplikat adalah masalah SEO yang cukup umum.
    Sistem penomoran halaman komentar yang diperkenalkan di Wordpress versi 2.7 tidak menyelesaikan masalah ini.
    Untuk mencegah duplikat konten di komentar, kami akan menggunakan atribut rel="canonical". Salin kode berikut dan tempel ke dalam file fungsi.php.
  • fungsi canonical_for_comments() (
  • global $cpage , $posting ;
  • jika ( $chalaman > 1 ):
  • gema "\n";
  • gema "
  • echo get_permalink( $posting -> ID ) ;
  • gema "" />\n " ;
  • akhir jika ;
  • add_action( "wp_head" , "canonical_for_comments" ) ;
  • Penjelasan kode. Pertama, kita membuat fungsi yang menambahkan tag link dengan atribut rel="canonical" ke setiap halaman komentar kecuali yang pertama. Kemudian kita lampirkan fungsi ini ke fungsi Wordpress wp_head() .8. MENERIMA POSTINGAN ATAU HALAMAN SEBAGAI VARIABEL PHPMasalah. Kemampuan untuk mendapatkan postingan saat ini atau seluruh halaman sebagai variabel PHP adalah hal yang sangat keren. Katakanlah Anda dapat mengganti beberapa bagian konten menggunakan fungsi str_replace() atau melakukan hal lain dengannya. Sekali lagi, tidak ada yang rumit. Kami melakukan hal yang sama: tempelkan kode berikut ke dalam file fungsi.php.
  • fungsi panggilan balik($buffer) (
  • // ubah buffer di sini, lalu kembalikan kode yang diperbarui
  • kembalikan $buffer;
  • fungsi buffer_start() (
  • ob_start("panggilan balik");
  • fungsi buffer_end() (
  • ob_end_flush();
  • add_action("wp_head" , "buffer_start" ) ;
  • add_action("wp_footer" , "buffer_end" ) ;
  • Penjelasan kode. Agar peretasan ini berfungsi, diperlukan tiga fungsi:
    • callback(): Fungsi ini mengembalikan seluruh halaman sebagai variabel $buffer. Anda dapat memodifikasinya sesuka Anda, misalnya menggunakan ekspresi reguler;
    • buffer_start() : Fungsi ini memulai buffering. Kami melampirkannya ke fungsi wp_head();
    • buffer_end() : Fungsi ini membersihkan buffer. Kami melampirkannya ke fungsi wp_footer().
    9. MENGGUNAKAN HOOKS DAN CRON UNTUK ACARA TERJADWALMasalah. Anda mungkin sudah tahu bahwa Wordpress dapat menggunakan acara terjadwal. Misalnya, Anda dapat mempublikasikan postingan pada waktu tertentu yang telah ditentukan. Dengan menggunakan hooks dan wp-cron, kita dapat dengan mudah menjadwalkan acara kita sendiri. Dalam contoh berikut, kami akan memaksa blog untuk mengirimi kami email setiap jam sekali. Rekatkan kode berikut ke dalam file fungsi.php.
  • jika (! wp_next_scheduled("tugas_saya_hook" ) ) (
  • wp_schedule_event( waktu () , "setiap jam" , "tugas_saya_hook" ) ;
  • add_action( "tugas_saya_hook" , "fungsi_tugas_saya" ) ;
  • fungsi tugas_saya_fungsi() (
  • wp_mail(" [dilindungi email]" , "Email otomatis" , "Halo, ini adalah email yang dijadwalkan secara otomatis dari WordPress." );
  • Penjelasan kode. Hal pertama yang akan kita lakukan tentu saja adalah membuat fungsi yang akan melakukan tindakan yang diperlukan. Dalam contoh ini, fungsi ini disebut my_task_function() dan hanya mengirimkan email ke alamat email yang ditentukan.
    Untuk menjadwalkan fungsi ini, kita akan menggunakan fungsi wp_schedule_event(). Argumen terakhir yang diteruskan ke sana akan menjadi hook kita, jadi kita kaitkan fungsi my_task_function() ke my_task_hook .10. DAFTAR SEMUA FUNGSI “HOOKED” Soal. Ketika terjadi kesalahan, daftar semua fungsi yang “terkait” bisa sangat berguna. Seperti semua potongan kode sebelumnya, berikut ini juga perlu dimasukkan ke dalam file fungsi.php. Ingatlah untuk menghapusnya setelah digunakan. Jika Anda tidak melakukan ini, pesan akan muncul setelah debugging.
  • fungsi list_hooked_functions($tag = salah ) (
  • global $wp_filter ;
  • jika ($tag) (
  • $kait [ $tag ] = $wp_filter [ $tag ] ;
  • jika (! is_array ($hook [ $tag ] ) ) (
  • trigger_error("Tidak ada yang ditemukan untuk "$tag " hook" , E_USER_WARNING ) ;
  • kembali ;
  • kalau tidak(
  • $kait = $wp_filter ;
  • ksort($kait);
  • gema "" ;
  • foreach ($kait sebagai $tag => $prioritas ) (
  • gema "
    >>>>>\t $tag
    " ;
  • ksort($prioritas);
  • foreach ($prioritas sebagai $prioritas => $fungsi ) (
  • echo $prioritas;
  • foreach ($berfungsi sebagai $nama => $properties ) echo "\t $name
    " ;
  • gema "" ;
  • kembali ;
  • Setelah Anda menempelkan kode ini ke dalam file fungsi.php, panggil fungsi list_hooked_functions(). Ini akan menampilkan kepada Anda daftar semua fungsi yang "ketagihan".

    Penjelasan kode. Kode ini memeriksa apakah nama kait diteruskan sebagai argumen ke fungsi. Jika lolos, nama pengait akan ditampilkan di layar. Anda juga dapat melihat kait hanya untuk fungsi tertentu:

    Dalam pemrograman, inisialisasi data sangat penting, karena di sinilah kita mengatur data tersebut untuk aplikasi. preset, seperti atributnya, file yang diperlukan dan data, metode koneksi ke database.

    WordPress sendiri sudah bagus prosedur tertentu inisialisasi. Selama siklus hidup halaman WordPress memicu banyak tindakan, banyak di antaranya telah kita bahas di artikel sebelumnya. Pada topik artikel hari ini, ini menyediakan serangkaian kait inisialisasi yang biasanya digunakan untuk menginisialisasi aplikasi sebelum menjalankan fungsi utamanya.

    Untuk membuat aplikasi berkualitas, pengembang plugin dan tema harus memahami contoh dan kesalahan umum yang dilakukan saat menggunakan kait ini. Pada artikel ini, kita akan melihat pentingnya init hooks WordPress dan berbagai skenario penggunaannya.

    Pengantar Kait Inisialisasi

    WordPress menyediakan set besar kait untuk digunakan dalam pengembangan plugin dan tema. Dalam permintaan standar, semua kait tindakan dieksekusi dalam urutan tertentu. Yaitu, semuanya dijalankan setelah inti WordPress menyelesaikan proses pemuatan.

    Jadi, kait inisialisasi digunakan terutama, seperti yang sudah Anda duga, untuk menginisialisasi proses dalam tema dan plugin. Mari kita lihat init hooks yang tersedia dalam urutan eksekusi:

    • init dijalankan setelah WordPress selesai memuat tetapi sebelum header dikirim.
    • widgets_init digunakan untuk mendaftarkan widget sisi aplikasi. Fungsi register_widget berjalan di dalam hook ini.
    • admin_init dijalankan pertama kali ketika pengguna masuk ke area admin WordPress. Biasanya ini digunakan untuk menginisialisasi pengaturan khusus admin.

    Selain ketiganya, ada juga hook bernama admin_bar_init. Ini berjalan setelah panel admin diinisialisasi. Codex WordPress tidak menjelaskan kaitan ini, dan sejumlah kecil plugin menggunakannya.

    WordPress mengeksekusi setiap hook dalam urutan tertentu (yang dapat Anda lihat di bagian Codex). Penting untuk mempertimbangkan urutan eksekusi saat menggunakan setiap action hook. Lihatlah skenario berikut untuk lebih memahami perbedaannya.

    Mendefinisikan admin_init di dalam init hook

    Jika perlu, kita dapat mendefinisikan kaitan WordPress satu sama lain. Dalam permintaan standar, hook admin_init dieksekusi sebelum hook init. Jadi mari kita coba mendapatkan sesuatu dengan memasukkan admin_init ke dalam init hook:

    add_action("init", "test_init"); fungsi test_init())( add_action("admin_init", "test_admin_init"); ) fungsi test_admin_init() ( echo "Admin Init Di Dalam Init"; )

    fungsi tes_init() (

    echo "Admin Init Di Dalam Init";

    Setelah mengeksekusi kode ini menggunakan konstruksi echo, kita akan mendapatkan hasil yang diinginkan.

    Definisi di dalam init hook admin_init

    Sekarang mari kita lihat kode dan hasil skrip di mana hook sebelumnya didefinisikan di dalam hook yang akan muncul kemudian dalam urutan eksekusi.

    add_action("admin_init", "test_admin_init"); fungsi test_admin_init() ( add_action("init", "test_init"); ) fungsi test_init() ( echo "Init Di dalam Admin Init"; )

    add_action("admin_init" , "test_admin_init" ) ;

    fungsi tes_admin_init() (

    add_action("init" , "test_init" ) ;

    fungsi tes_init() (

    echo "Init Di Dalam Admin Init" ;

    Seperti yang diharapkan, kita tidak akan mendapatkan hasil apa pun di sini karena hook init dieksekusi sebelum hook admin_init dan karenanya menjadi tidak tersedia setelah admin_init ditentukan.
    Seperti yang Anda lihat, untuk membuat plugin yang sukses, Anda perlu memahami prosedur dan urutan eksekusi hook. Urutan pemicu penting untuk semua hook di WordPress.

    Menjelajahi hook init dan admin_init

    Di antara banyak kait inisialisasi, init dan admin_init layak dipelajari karena banyak digunakan di banyak plugin. Oleh karena itu, penggunaan kait inisialisasi lainnya selalu dibandingkan langsung dengan keduanya.

    Sekarang kita akan melihat fungsi dari hook init dan admin_init.

    init dijalankan di setiap permintaan untuk bagian front end dan admin situs WordPress. admin_init berjalan setelah bagaimana bagian admin menyelesaikan proses pengunduhan. Oleh karena itu, ini juga dijalankan dalam setiap permintaan untuk membaca halaman di bagian admin situs. Untuk memanfaatkan manfaatnya, pengguna harus login.

    Karena kedua kait ini dieksekusi di setiap permintaan, maka perlu direncanakan blok fungsi dalam pelaksanaan salah satunya, karena hal ini mungkin berdampak pengaruh yang besar pada kinerja situs.

    Cara menggunakan init hooks dengan benar

    Biasanya, kait inisialisasi tersedia di sebagian besar plugin WordPress yang ada dan diperlukan untuk mengontrol pemrosesannya.

    WordPress tidak menentukan apa yang harus atau tidak boleh kami sertakan dalam kode kami, sehingga pengembang dapat membuat kesalahan kecil yang dapat menyebabkan penurunan kinerja yang signifikan. Di bagian artikel ini kita akan melihat bagaimana Anda dapat menggunakan admin_init dan init hooks secara efektif menggunakan praktik terbaik sebagai contoh.

    init kait

    • Mendaftarkan Jenis Posting Kustom – WordPress merekomendasikan penggunaan inithook untuk mendaftarkan jenis konten khusus baru.
    • Menginisialisasi konfigurasi dan pengaturan plugin Anda – Konfigurasi dan pengaturan plugin harus ditentukan di setiap permintaan dan oleh karena itu pendekatan terbaik untuk melakukan ini adalah dengan memasukkannya ke dalam init hook.
    • Mengakses data yang dikirim oleh pengguna (Menggunakan $_GET dan $_POST) – Kita dapat mencegat data yang dikirim oleh pengguna tanpa tindakan apa pun, namun disarankan untuk menggunakan init hook karena menjamin bahwa tindakan tersebut akan dieksekusi di setiap permintaan.
    • Menambahkan aturan penulisan ulang baru - Anda dapat menentukan aturan penulisan ulang baru menggunakan init hook, namun ingat bahwa aturan baru hanya akan berlaku setelah semua aturan penulisan ulang diperbarui.
    • Tambahkan atau hapus tindakan khusus – Plugin berisi banyak tindakan khusus yang memungkinkan Anda memperluas fungsionalitas. Mungkin ada skenario di mana kita perlu menambahkan tindakan kustom baru serta menghapus tindakan yang sudah ada. Dalam kasus ini, tindakan ini perlu dilakukan di dalam init hook.
    • Menentukan jalur menuju file bahasa plugin - WordPress menawarkan dukungan multibahasa dan oleh karena itu kami dapat mengunggah file yang berisi string yang diterjemahkan. Ini juga dapat ditempatkan di dalam init hook.

    Kaitkan admin_init.

    • Mengambil kendali - Izin perlu diperiksa pengguna yang berwenang sebelum memberikan masing-masing dari mereka akses ke serangkaian fitur atau fungsi tertentu. admin_init adalah hal pertama yang dijalankan di area admin, artinya kita dapat menggunakannya untuk mengontrol akses.
    • Menambahkan Pengaturan Baru – Kita dapat menggunakan kait ini untuk menambahkan halaman pengaturan atau pengaturan baru ke panel pengaturan WordPress yang ada.

    Masih banyak lainnya pilihan yang memungkinkan penggunaan kait ini, tetapi fitur ini memiliki kaitnya sendiri, dan tidak selalu menggunakan kait inisialisasi.

    Kesalahan umum saat menggunakan kait inisialisasi

    Seringkali kita menemukan skenario di mana pengembang salah memahami cara menggunakan kait inisialisasi. Penggunaannya yang salah dapat menyebabkan masalah kinerja (dan juga kualitas rendah plugin Anda).

    Mari kenali kesalahan utama dan temukan cara menghindarinya:

    • Perbarui Aturan Penulisan Ulang – Ini adalah operasi intensif sumber daya yang memperbarui dan mengurutkan semua aturan penulisan ulang untuk menambahkan aturan baru dan menghapus aturan yang tidak diperlukan. Banyak pengembang memilih untuk memperbarui aturan penulisan ulang di dalam tindakan init dan akhirnya menciptakan beban berlebihan di setiap permintaan. Untuk menghindari hal ini, kita harus memikirkan cara memperbarui aturan penulisan ulang secara manual menggunakan tombol, atau memperbaruinya dalam tindakan tidak teratur seperti menyimpan pengaturan plugin.
    • Akses basis data – Menyediakan berbagai fungsionalitas memerlukan akses ke basis data, namun penting untuk menghapus kueri basis data yang tidak perlu di dalam kait inisialisasi, karena jika tidak mereka akan dieksekusi di setiap permintaan. DI DALAM dalam hal ini, solusi idealnya adalah dengan menyematkan kait kueri basis data ke dalam kait khusus fungsi untuk menghindari beban berlebihan.
    • Melakukan prosedur pemutakhiran ke versi baru – Untuk dapat memperbarui fungsionalitas plugin ke versi baru, mereka harus memiliki prosedur pemutakhiran yang dipikirkan dengan matang. Biasanya, pengembang menggunakan init hooks untuk memeriksa versi plugin dan pengaturan sebelum memulai proses peningkatan. Kami dapat mengizinkan pengguna memperbarui plugin dengan memberi mereka jendela khusus pemeriksaan otomatis dalam setiap permintaan.
    • Melakukan kait inisialisasi alih-alih kait khusus fungsi adalah salah satu yang paling banyak dilakukan kesalahan khas diizinkan oleh pengembang. Ada banyak hooks di WordPress yang dibuat untuk tujuan yang berbeda dan unik. Penting untuk menggunakannya untuk menghindari kemungkinan konflik dan membuat kode dapat diperluas. Hook seperti admin_init dan init, pada prinsipnya, dapat digunakan sebagai pengganti hook khusus, sehingga pengembang cenderung menggunakannya tanpa memikirkan konsekuensinya. Beberapa skenario umum saat pengembang menggunakan hook init dan admin_init alih-alih yang direkomendasikan:
    • admin _ menu – Anda dapat menambahkan halaman menu menggunakan fungsi add_menu_page. Disarankan untuk menggunakan hook admin_menu untuk membuat halaman admin. Namun, banyak pengembang lebih suka menggunakan admin_init, karena dijalankan setelah hook admin_menu.
    • wp_enqueue_scripts – Cara paling efektif untuk menambahkan skrip dan gaya adalah dengan menggunakan hook wp_enqueue_scripts. Tetapi banyak orang menggunakan wp_enqueue_script untuk memuat skrip dan gaya di dalam init.

    Ada banyak situasi serupa di mana pengembang menggunakan init hook generik alih-alih hook khusus fungsi, dan hal ini harus dihindari sebisa mungkin.

    Kait inisialisasi: melanjutkan

    Kait inisialisasi WordPress sangat penting dalam pengembangan plugin dan tema. Banyak pengembang yang salah menggunakannya saat membuat beban ekstra. Pada artikel ini kita telah membahas cara menggunakan pengait ini dengan cara terbaik, serta kesalahan paling umum dan cara menghindarinya.

    Sekarang kita dapat menerapkan logika yang sama pada kait khusus dalam pengembangan plugin. Banyak plugin tingkat lanjut memiliki kaitan tindakannya sendiri untuk ekstensibilitas di kemudian hari. Untuk plugin seperti itu, kita dapat menentukan hook inisialisasi spesifik untuk memungkinkan pengembang fokus pada tugas menggunakan hook yang telah ditentukan sebelumnya selama inisialisasi, daripada harus menggunakannya terus-menerus.

    Pertanyaan: Pengalaman hidup?

    Jawaban: Kebetulan saya belajar menjadi programmer hampir secara tidak sengaja (itu adalah spesialisasi prioritas kedua). Setelah pelatihan, saya cukup beruntung bisa langsung mendapatkan pekerjaan sebagai programmer 1C, alhasil saya bertahan di bidang ini selama 5 tahun.

    Akibatnya, ketika mengutak-atik hal ini menjadi sangat membosankan, saya memutuskan untuk mengubah profil aktivitas saya secara radikal dan menjadi asisten sutradara di TV regional.

    Di sela-sela mengedit acara TV, saya memutuskan untuk mulai belajar PHP sendiri, dan saat itu juga saya mendapat kursus PHP dari Webformyself - nyatanya hal ini memberikan dorongan untuk kembali ke profesi programmer, namun dengan fokus hanya pada web.

    Pengalaman komersial pertama saya dalam pengembangan web adalah proyek yang saya kembangkan di Joomla, itu adalah usaha yang panjang, sulit, dan berpenghasilan rendah, tetapi saya bertahan dalam periode ini, memperoleh pengalaman dan mulai memahami cara bekerja untuk mendapatkan hasil dan cara berkomunikasi langsung dengan pelanggan. Kemudian ada pengalaman mandiri dalam mengembangkan beberapa toko di Joomla + Virtuemart, pengetahuan dan solusi diambil langsung dari kursus “Toko online di Joomla” (https://site/jshop/).

    Kemudian hidup saya berubah tajam, saya menandatangani kontrak penuh pertama saya dengan sebuah perusahaan IT. Setelah menyiapkan semua orang proses internal dan memahami strategi perusahaan, kini saya punya waktu untuk pengembangan diri lebih lanjut di bidang web developer..

    Pertanyaan:

    Jawaban: Dalam hal ini, hanya ada sedikit keraguan, dan hanya tentang satu hal - seberapa cepat uang yang dikeluarkan akan terbayar. Dan ada keyakinan penuh bahwa mereka akan membuahkan hasil.

    Pertanyaan: Keyakinan dan nilai apa yang paling penting bagi Anda dalam kehidupan secara umum dan pengembangan web pada khususnya?

    Jawaban: Hal utama dalam hidup adalah cinta. Sedangkan untuk pengembangan web, ada pengembangan yang konstan dan tantangan baru.

    Pertanyaan:

    Jawaban: Ada masalah utama: sejak saya dulu pemula yang lengkap di dunia pengembangan web - Saya tidak memiliki rencana terstruktur yang jelas tentang harus mulai dari mana dan arah yang harus diambil. Setelah mengikuti kursus PHP, saya mempelajari semua dasar-dasar bahasa ini, cara membangun aplikasi, dan dari sini saya sudah memiliki pemahaman dan visi tentang bagaimana dan di mana mengembangkan semua ini.

    Pertanyaan: Keberhasilan apa yang telah Anda capai?

    Jawaban: Perkembangan saya menjadi lebih cepat dan berkualitas, saya menguasai beberapa teknologi, tidak perlu lagi pergi ke kantor, dan secara umum profesi web developer memungkinkan saya mendapatkan uang dalam kondisi yang nyaman bagi saya dan di waktu yang nyaman.

    Pertanyaan:

    Jawaban: Keluarga, anak-anak, jalan-jalan, dan hobi saya telah menjadi aktivitas utama saya menghasilkan uang (saya berbicara tentang pengembangan web).

    Unger Oleg

    Saya banyak diminati di pasar tenaga kerja, meskipun usia saya sudah lanjut, saya sekarang memiliki pemahaman yang jelas tentang arah apa yang harus saya ambil selanjutnya

    Pertanyaan: Pengalaman hidup?

    Jawaban: Sepulang sekolah saya melamar menjadi seorang programmer, tetapi poin saya tidak cukup. Belajar menjadi insinyur elektronik. Bekerja di daerah yang berbeda, terutama dalam produksi. Daerah yang dulunya mendatangkan penghasilan bagus telah bermigrasi ke Tiongkok, sulit mencari pekerjaan, dan saya sudah bosan.

    Pertanyaan: Jelaskan diri Anda di awal perjalanan Anda?

    Jawaban: Di awal perjalanan saya, saya sangat ragu apakah ini layak untuk dimulai. Saya sangat termotivasi dengan contoh teman saya, yang juga memulai dari awal dan dalam waktu kurang dari setahun mendapat pekerjaan bergaji normal.

    Pertanyaan: Deskripsikan dirimu sekarang?

    Jawaban: Hampir tiga tahun telah berlalu, saya sudah memiliki pengetahuan dan terus memperoleh pengetahuan baru berkat kursus dari WebForMySelf.

    Pertanyaan: Bagaimana Anda mengetahui tentang kursus kami?

    Jawaban: Saya mulai mencari sekolah atau kursus seperti apa ini, yang menjelaskan semuanya dengan sangat baik dan detail. Saya menemukannya di YouTube, dan pencarian lebih lanjut mengarah ke situs web Webformyself.

    Pertanyaan: Apa yang pertama kali Anda pikirkan ketika mendengar tentang proyek kami?

    Jawaban: Saya pikir bagus jika ada begitu banyak informasi di satu tempat.

    Pertanyaan: Apakah Anda ragu?

    Menjawab: Sejujurnya, ada keraguan. Tapi saya mendaftar ke Klub Premium. Dan saya belajar banyak dari video: PHP, JavaScript, ekspresi reguler, kursus pemrograman berorientasi objek (OOP PHP), dll.

    Pertanyaan: Apa yang kamu suka?

    Jawaban: Saya sangat menyukai kursus ini yang menyertakan kursus dan video lain dari akses premium sebagai bonus. Dan beruntung sekali saya tidak harus memilih antara Yii2 dan Laravel, karena keduanya sudah termasuk.

    Pertanyaan:

    Jawaban: Saya harus menghabiskan banyak waktu mencari informasi yang kurang lebih terstruktur mengenai topik yang tepat.

    Pertanyaan: Keberhasilan apa yang telah Anda capai?

    Jawaban: Entah bagaimana, tanpa saya sadari, saya mulai memahami apa yang sebelumnya tampaknya tidak dapat saya pahami. Pada saat ini Saya telah bekerja sebagai programmer selama hampir satu tahun (Yii, MS SQLServer, JavaScript), Saya berpartisipasi dalam pengembangan fungsionalitas baru dan dukungan proyek CRM di organisasi yang berhubungan dengan keamanan, otomasi, dan sistem komunikasi.

    Pertanyaan:

    Jawaban: Saya merasa percaya diri dan optimis. Saya berencana untuk lebih meningkatkan tingkat profesional saya.

    Pertanyaan: Perubahan ke arah yang lebih baik apa yang terjadi dalam hidup Anda?

    Jawaban: Perubahan ke arah yang lebih baik: Saya memiliki banyak permintaan di pasar tenaga kerja, meskipun usia saya sudah tua, saya sekarang memiliki pemahaman yang jelas tentang arah apa yang harus saya ambil selanjutnya.

    Masa depan tidak lagi kabur dan menakutkan seperti dulu.

    Pertanyaan: Saya tidak pernah menyisihkan uang untuk pendidikan mandiri, dan alasan seperti “sudah terlambat untuk memulai” atau “Saya tidak bisa” tidak dapat saya terima

    Jelaskan diri Anda di awal perjalanan Anda?

    Pertanyaan: Jawaban: Pada awal perjalanan saya, pemrograman web adalah “hutan gelap” yang menakutkan dan tidak nyaman, tetapi rasa haus akan pengetahuan membuat saya maju, ya, saya harus menulis parser di Delphi, penembak jitu Ebay dan sebuah program untuk berpartisipasi dalam tender ditulis. Saat ini, saya memahami bahwa lebih baik menulis sesuatu seperti ini di PHP (tidak perlu “menemukan kembali roda” dengan perpustakaan Synapse). Apa yang akan Anda katakan tentang segala keberatan yang mungkin Anda temui sebelum membeli? produk informasi

    , bagaimana Anda mengatasi keberatan-keberatan ini (tidak ada uang; saya tidak bisa melakukannya; terlambat untuk memulai; terlalu dini untuk memulai; saudara menentang; terlalu sulit; mungkin sebagian dari keberatan Anda)?

    Pertanyaan: Jawaban: Saya tidak pernah menyisihkan uang untuk pendidikan mandiri, dan alasan seperti “sudah terlambat untuk memulai” atau “Saya tidak bisa” tidak dapat saya terima - mereka yang berjalan kaki akan menguasai jalannya.

    Masalah apa yang ingin Anda selesaikan, masalah apa yang Anda alami sebelum membeli kursus? Menjawab: Masalah utama

    Pertanyaan: Sebelum membeli kursus, tingkat pengetahuan saya nol. Ya, tentu saja, Anda dapat menonton banyak video gratis di YouTube, di sini Anda tidak akan mengeluarkan uang, tetapi Anda akan menghabiskan hal yang paling berharga - waktu. Di YouTube, sebagian besar video mengandung banyak air, karena penulis mencoba membuat video tersebut berdurasi selama mungkin untuk menghasilkan uang dari iklan.

    Jawaban: Saya menemukannya di Internet; pada saat itu saya sangat perlu membuat situs galeri, dan saya membeli kursus tata letak yang pertama. Saya berhasil gagal dalam proyek itu - saya kurang pengetahuan. Saya bisa membuat layout, saya bahkan menginstal JQuery, tetapi kemudian pengetahuan saya habis, saya membutuhkan panel admin, saya perlu menyimpan data di suatu tempat. Di sinilah saya mengenal pola MVC dan ingin menguasai PHP (tidak ada masalah dengan MySQL, karena sifat pekerjaan saya, saya sangat mengenal SQL, saya sering harus mengambil data dari database dalam konteksnya gudang, kontraktor, dll).

    Pertanyaan: Perubahan apa yang mulai terjadi ketika Anda mempelajari kursus tersebut?

    Jawaban: Ketika saya mengetahui kursus tersebut, tidak ada perubahan yang terjadi, saya hanya membeli satu kursus terlebih dahulu dan mulai belajar, lalu yang kedua…. perubahan mulai terjadi selama mempelajari materi, dan perubahan tersebut pasti ke arah yang lebih baik.

    Pertanyaan: Apa yang bisa terjadi jika Anda tidak dapat menyelesaikan masalah Anda jika Anda tidak menggunakan produk kami?

    Jawaban: Kecil kemungkinannya terjadi sesuatu yang serius, pengembangan web adalah hobi saya, saya tidak mengambil uang untuk itu, dan saya hanya mengambil apa yang benar-benar menarik bagi saya. Nah, khusus untuk produk anda, merekalah yang membimbing saya dalam dunia web development, karena di awal perjalanan saya seperti anak kucing buta, pengetahuan saya nol, dan saya tidak tahu harus kemana dan pergi. apa yang harus dilakukan. Saya percaya bahwa di awal perjalanan Anda, Anda hanya membutuhkan seorang mentor untuk menunjukkan jalannya, dan kursus Anda menjadi mentor ini bagi saya. Ya, tidak semuanya langsung berhasil, tetapi yang utama adalah jangan menyerah.

    Pertanyaan: Keberhasilan apa yang telah Anda capai?

    Jawaban: Keberhasilan apa yang telah Anda raih? Hanya dalam 2 minggu saya menulis situs web untuk pusat layanan Huawei di Kazakhstan, kini situs ini sudah tidak beroperasi lagi, karena Huawei telah mengintegrasikan pengajuan aplikasi ke dalam sistem mereka. Menulis situs web untuk perusahaan transportasi dengan kemampuan melacak lokasi kargo secara online, website toko online, website untuk saudara perempuan saya - dia adalah seorang psikolog yang berpraktik. Tidak ada yang istimewa untuk dibanggakan; bagi saya, ini adalah hobi yang pertama dan terpenting.

    Pertanyaan: Bagaimana perasaanmu? Apa yang kamu pikirkan? Apa rencanamu?

    Jawaban: Rencana ke depan, mungkin tidak berhenti sampai di situ dan terus mempelajari teknologi baru dalam pengembangan web. Mungkin aku akan mencobanya aplikasi seluler, jika ada cukup waktu.

    Saya sangat menyukai kursus dan pelajaran Andrei Kudlay. Bagi saya, dia hanyalah seorang penyihir di web.

    Pertanyaan: Pengalaman hidup?

    Jawaban: Semuanya dimulai dengan tata letak, saya mempelajari semua dasar-dasarnya dari awal, dan mulai menerima pesanan lepas sederhana. Lalu saya berkenalan dengan Joomla, tapi entah mengapa saya tidak cocok dengannya, saya tidak tahu kenapa. Saya menemukan Wordpress - dan kemudian kami menemukan satu sama lain. Saya mulai mempelajari CMS ini dengan cermat dan bekerja sama dengannya. Belajar kursus gratis dari WFM dalam membuat tema dari awal, saya memutuskan untuk segera membeli kursus WordPress-Profesional - karena di sana juga terdapat kursus bonus tentang PHP, yang sangat saya butuhkan saat itu. Dalam proses belajar, saya menyadari bahwa tidak semuanya serumit kelihatannya, dan sedikit demi sedikit saya mulai menerima pesanan pembuatan tema untuk WordPress. Sekarang saya bahkan tidak melihat pertukaran freelance; saya memiliki pelanggan tetap saya sendiri. Profil utamanya adalah membuat tema untuk Wordpress dari awal.

    Pertanyaan: Jelaskan diri Anda di awal perjalanan Anda?

    Jawaban: Di awal perjalanan, ada keraguan - apakah ada uang di Internet, sebagai pekerja lepas? Sejujurnya, tidak mudah untuk memulainya - dengan sedikit pengalaman dan portofolio yang “tidak tebal”, butuh waktu lama untuk menemukan pelanggan. Secara umum, saya menemukan formula tertentu untuk diri saya sendiri: pada awalnya segala sesuatu selalu tampak menakutkan, tidak dapat dipahami, tidak mungkin, tetapi itu cukup untuk menguraikannya tugas besar

    Pertanyaan: Deskripsikan dirimu sekarang?

    menjadi beberapa tahap dan mulai melakukan - bagaimana semuanya mulai berjalan, terbentuk. Anda hanya tidak perlu takut dan melakukannya - akan selalu ada solusi. Jawaban: Sekarang profil utama saya adalah membuat tema WordPress dari awal. Saya tidak melihat pertukaran freelance, ada pelanggan dan aliran yang konstan pekerjaan yang menarik . Saya tahu pasti bahwa Anda dapat menghasilkan uang di Internet. Ada keinginan untuk memperluas pengetahuan Anda area PHP jadi saya membelinya kursus PHP

    Pertanyaan: master dari tim WFM dari Andrey Kudlay. Saya sangat menyukai kursus dan pelajarannya - dia menjelaskan materi dengan baik.

    Selain itu, menurut saya kursus/pelajarannya sangat menarik untuk ditonton; tidak membosankan bagi saya, atau semacamnya. Saya tidak tahu bagaimana menjelaskannya dengan benar, tetapi dalam perjalanan saya menemukan banyak pelajaran yang membuat saya ingin tertidur sambil menonton). Pada titik manakah Anda memutuskan untuk membeli kursus tersebut? Jawaban: Saya mengerti apa yang saya butuhkan untuk pertumbuhan lebih lanjut

    set baru Apa yang kamu suka?

    pengetahuan terstruktur. Saya sedang mencari kursus/pelajaran untuk diri saya sendiri. Saat itu, di RuNet, saya tidak melihat adanya pesaing WFM dalam kursus WordPress. Secara umum, saya selalu mencari bahan berkualitas yang saya butuhkan untuk pengembangan.

    Pertanyaan: Keberhasilan apa yang telah Anda capai?

    Pertanyaan : Jawaban: Saya sangat menyukai kursus dan pelajaran Andrei Kudlay. Bagi saya, dia hanyalah seorang penyihir di web). Perlu dicatat keahliannya yang luar biasa dalam menjelaskan informasi yang kompleks. di sekitarmu. Saya memperoleh pengetahuan dan keterampilan yang sekarang dapat saya jual secara bebas. Ada keyakinan di masa depan. Freelancing bagi saya adalah kebebasan dan kesempatan untuk berkembang, membangun diri.

    Dengan bantuan kursus Anda, saya belajar cara membuat situs web dari awal. Sekarang saya membuat situs web khusus

    Dengan bantuan kursus Anda, saya belajar cara membuat situs web dari awal. Sekarang saya membuat situs web khusus.

    Saya memulai dari awal. Ada banyak masalah dan pertanyaan. Dan hampir tidak mungkin menemukan jawaban spesifik di Internet.

    Tim Anda luar biasa. Karena Anda menjelaskan semuanya dengan jelas dan jelas to the point. Menurut pendapat saya, teman-teman, Anda tidak memiliki analog di Internet! Terima kasih banyak atas usaha Anda.

    Setelah mempelajari kursus saya belajar cara membuat situs web!

    Apa yang paling Anda ingat dari kursus ini? Sejujurnya? Saya ingat semuanya!))) Saya berencana membuat toko online sendiri dan menembus pasar Armenia dengan produk saya. Sekali lagi saya ingin mengucapkan terima kasih. Terima kasih banyak!

    ...Dan sebelum saya menyerah, saya melihat video di YouTube dari tim Penulis WebForMyself. Saya menonton satu demi satu dan tidak bisa melepaskan diri

    Halo, nama saya Julia Rietfeld, saya seorang pengembang front-end di Kementerian Kehakiman di Belanda. Saya sangat ragu untuk membeli kursus tentang Laravel. Saya telah bekerja sebagai desainer tata letak selama 5 tahun sekarang dan desainer grafis dan bagi saya sepertinya php (dan bahasa backend lainnya) adalah hal yang hebat programmer yang cerdas

    . Namun suatu saat bos saya mengatakan bahwa saya juga perlu belajar PHP yaitu Laravel untuk membantu pengembangan aplikasi. Untuk waktu yang sangat lama saya ragu apakah teori rumit seperti itu akan berhasil. Bagaimana saya, sebagai orang yang kreatif, dapat membangun hal-hal yang kompleks, dan bahkan dalam PHP?

    Apakah layak menginvestasikan begitu banyak waktu dan uang?

    Saya menonton kursus tentang Laravel di lynda.com. Kemudian saya membeli beberapa kursus tentang framework ini di Udemy.com. Lalu ada kursus di pluralsight.com. Semuanya sulit. Dan ini bukan soal bahasa; Saya telah belajar dan bekerja dalam bahasa Inggris selama 2 dekade. Dan sebelum saya menyerah, saya melihat video Victor di YouTube. Saya menonton satu demi satu dan tidak bisa melepaskan diri. Namun setelah menyelesaikan 19 dari 39 pelajaran (50%) dari bagian teoretis kursus Laravel, saya ingin mengatakan dengan penuh keyakinan bahwa semua ketakutan saya sia-sia. Victor hanya mengantisipasi pertanyaan dan pemikiran saya seperti 'bagaimana jika..'. Video direkam di kualitas yang sangat baik

    dan gambar di mana dia menjelaskan apa itu, misalnya Middleware, bagi saya sebagai orang visual, itu hanyalah sebuah penyelamatan.
    Dengan hormat dan pengakuan,

    Julia Rifteld Saya belajar apa itu tata letak, server maya

    Saya mempelajari apa itu layout, server virtual, database, bahasa PHP, dll. dan saya tahu cara mengatasinya. Saya tahu cara menemukan kesalahan atau kesalahan ketik, cara menulis mesin sesuai kebutuhan saya, cara mengubahnya dan memodernisasikannya.

    Yang terpenting, selain penyajian materinya yang berkualitas tinggi, saya menyukai gaya presentasinya. Karena Namun materinya kami pelajari sendiri, sehingga banyak poin yang harus direvisi beberapa kali. Saya suka bahwa kursus ini memiliki struktur pelajaran yang jelas, saya langsung tahu pelajaran mana yang perlu saya ulangi untuk memperjelas pertanyaan apa pun. Saya mempelajari rekamannya selama beberapa jam dan tidak bosan mendengarkannya: suara penulis kursus menyenangkan, tenang, dan tidak tergesa-gesa. Ini sangat penting bagi saya.

    Saya sangat ingin ulasan saya dapat membantu banyak orang yang sedang mencari jati diri, memilih arah kegiatan baru, atau sekadar memilih kursus untuk meningkatkan keterampilan mereka.

    Jika Anda baru mengenal hook, artikel ini akan membantu Anda. Contoh yang diberikan dalam artikel ini diambil dari inti WordPress, serta dari pengalaman saya selama bertahun-tahun sebagai pengembang plugin.


    Hooks WordPress adalah fitur yang memungkinkan Anda memperluas kemampuan plugin dan tema tanpa risiko merusaknya. Apa itu kait?

    Pengait "lakukan" disebut "tindakan". Di mana pun suatu tindakan ditentukan, Anda dapat mengeksekusi kode Anda sendiri. Berikut beberapa contohnya:

    • mengirim e-mail kepada penulis setelah entri diterbitkan;
    • memuat skrip khusus di footer halaman;
    • tambahkan instruksi di atas formulir login.

    Kait "sesuaikan" disebut "filter". Filter memungkinkan Anda mengubah atau menyesuaikan nilai dan mengembalikannya bentuk baru. Berikut beberapa contohnya:

    • menampilkan judul postingan dengan huruf kapital;
    • melampirkan tautan ke catatan terkait di bawah konten utama;
    • mengubah parameter yang diambil dari database.

    Untuk filter, tidak hanya posisinya yang penting, namun juga nilai yang dikembalikan. WordPress memiliki filter untuk hampir setiap nilai yang diprosesnya.

    Elemen Prosedur Kait

    Mari kita gunakan hook wp_head sebagai contoh tindakan, dan hook the_content sebagai contoh filter.

    Kait (kata benda)

    Pengait itu sendiri merupakan indikasi kapan dan di mana keajaiban terjadi. Bayangkan ini adalah sebuah kail yang ditancapkan seorang pemanjat ke permukaan batu. Pengait memiliki posisi tertentu. Jika pendaki lain ingin menuju ke arah tersebut, bisa memanfaatkannya.
    Kait tindakan dipanggil menggunakan fungsi do_action:

    do_action("wp_head");

    Kait dipanggil menggunakan apply_filters() :

    $konten=apply_filters("konten_",$konten);

    Seperti yang Anda lihat, kita perlu mencegat data dari filter.

    Tindakan dan filter

    Elemen berikutnya dalam prosedur hook adalah tindakan atau filter. Ini adalah fungsi yang Anda tetapkan untuk melakukan atau memfilter sesuatu. Ini adalah pendaki yang siap menggunakan kail apa pun untuk mendaki sedikit lebih tinggi.
    Tindakan yang berjalan di wp_head adalah noindex() .

    functionnoindex())( // Jika blog bukan untuk publik, suruh robot lewat. if("0"==get_option("blog_public")) wp_no_robots(); )

    Pengait memeriksa apakah pengaturan visibilitas mesin pencari dinonaktifkan. Jika demikian, wp_no_robots() menambahkan tag meta robot yang menunjukkan mesin pencari jangan mengindeks situs tersebut.
    Contoh filter untuk the_content adalah wpautop() . Ini bertanggung jawab untuk membungkus paragraf dalam tag

    Dan menggunakan tag
    untuk jeda baris.

    functionwpautop($pee,$br=true)( // … return$pee; )

    Berbeda dengan tindakan, fungsi filter memerlukan setidaknya satu argumen. Itu harus dikembalikan.

    Kait (kata kerja)

    Dalam prosedur hook WordPress, Anda perlu menentukan untuk apa sebenarnya hook itu. Artinya kita harus mengikat suatu fungsi (kata kerja) ke sebuah kait (kata benda). Hal ini dilakukan dengan menggunakan fungsi yang sering disalahartikan sebagai "hook".
    Untuk kait wp_head dan tindakan noindex(), koneksi dibuat menggunakan baris kode ini:

    add_action("wp_head","noindex",1);

    Parameter ketiga adalah prioritas. Kita akan melihatnya di bawah.
    Menyertakan wpautop() di the_content dilakukan dengan baris ini:

    add_filter("konten_","wpautop");

    Ini adalah prinsip dasar dari prosedur pengait. Kami akan melihatnya lebih detail di bagian berikut.

    Apakah Anda sudah menggunakan pengait ini?

    Meskipun Anda "hanya" mengubah tema atau menambahkan kode ke file function.php, Anda sudah menggunakan tindakan dan filter.

    WP_HEAD

    Mari kita lihat bagian header tema Twenty Fifteen yang dapat ditemukan di file wp-content/themes/twentyfifteen/header.php.

    Tidak banyak kode antara tag pembuka dan penutup, tetapi lihat kode sumber halaman di browser. Anda akan melihat berbagai elemen meta di sana, termasuk .
    Elemen yang mungkin tidak ada di file header.php ditambahkan oleh fungsi wp_head(). Jika Anda menggunakan lingkungan pengembangan, tinjau isinya.

    /** * Meluncurkan tindakan wp_head * * @since 1.2.0 */ functionwp_head())( /** * Keluarkan skrip atau data di tag head melalui front-end. * * @since 1.5.0 */ lakukan_aksi("wp_head" ; )

    Satu-satunya hal yang dilakukan fungsi wp_head() adalah mencetak kait wp_head. Artinya tema dapat menggunakan do_action('wp_head') dan bukan wp_head().
    Kait ini sudah digunakan oleh kernel. Berikut adalah beberapa tindakan yang WordPress sambungkan ke hook ini secara default:

    add_action("wp_head","_wp_render_title_tag",1); add_action("wp_head","wp_enqueue_scripts",1); add_action("wp_head","feed_links",2); add_action("wp_head","feed_links_extra",3); add_action("wp_head","rsd_link"); add_action("wp_head","wlwmanifest_link"); add_action("wp_head","adjacent_posts_rel_link_wp_head",10,0); add_action("wp_head","locale_stylesheet"); add_action("wp_head","noindex",1); add_action("wp_head","print_emoji_detection_script",7); add_action("wp_head","wp_print_styles",8); add_action("wp_head","wp_print_head_scripts",9); add_action("wp_head","wp_generator"); add_action("wp_head","rel_canonical"); add_action("wp_head","wp_shortlink_wp_head",10,0); add_action("wp_head","wp_site_icon",99);

    Ini termasuk tindakan noindex(), serta (dimulai dengan Versi WordPress 4.1) panggil _wp_render_title_tag() yang menghasilkan tag judul.

    Isi

    Contoh kait filter yang Anda gunakan tanpa menyadarinya adalah the_content .
    Itu tersembunyi di balik fungsi the_content(), yang digunakan untuk menampilkan konten postingan atau halaman. Ini berisi panggilan ke kait the_content.

    functionthe_content($more_link_text=null,$strip_teaser=false)( $content=get_the_content($more_link_text,$strip_teaser); // … $content=apply_filters("the_content",$content); $content=str_replace("]]> ","]]>",$konten); echo$konten; )

    Secara default, fungsi the_content sudah memiliki beberapa filter yang terpasang padanya.

    add_filter("the_content","wptexturize"); add_filter("konten_","convert_smilies"); add_filter("isi_isi","konversi_karakter"); add_filter("konten_","wpautop"); add_filter("the_content","shortcode_unaautop"); add_filter("isi_isi","lampiran_tambahan");

    Filter ini bertanggung jawab atas format dan baris karakter khusus dalam teks. Mereka juga banyak digunakan oleh plugin untuk melampirkan elemen seperti ikon jejaring sosial atau catatan terkait.

    Pelajaran tentang penggunaan the_content

    Berikut adalah dua contoh bagaimana penggunaan hook yang salah menyebabkan suatu fungsi gagal.
    Badan fungsi the_content() juga berisi panggilan ke get_the_content() . Saya telah melihat yang kedua digunakan alih-alih yang pertama di beberapa thread. Namun dengan cara ini pengait itu sendiri dinonaktifkan, dan banyak fungsi tidak akan berfungsi.
    Jika Anda terhubung ke the_content , perlu diingat bahwa ini digunakan tidak hanya pada halaman konten, tetapi juga pada halaman daftar. Misalnya di arsip, juga di halaman utama.

    Parameter dalam prosedur kait

    Parameter utama yang diperlukan adalah nama hook, nama fungsi, prioritas dan argumen yang diteruskan ke sana.
    Seperti inilah tampilan panggilan add_filter:

    add_filter($tag,$fungsi,$prioritas,$accepted_args);

    Nama pengait ($tag)

    Anda tidak akan dapat melakukan apa pun dengan nama hook yang digunakan di inti, plugin, atau tema WordPress. Namun saat menetapkan nama Anda sendiri, Anda harus mengikuti beberapa prinsip.
    Nama tindakan harus menyertakan lokasi, dan filter harus menyertakan lokasi dan nilai yang akan diubah.
    Contoh tindakannya adalah wp_head dan wp_footer, yang diberi nama berdasarkan lokasinya. Awalan atau sufiks juga sering digunakan. Misalnya: sebelum, sebelum, mulai, sesudah, dan berakhir.

    Fungsi wp_delete_post(), yang bertanggung jawab untuk menghapus postingan, mencakup kait berikut:

    • sebelum_hapus_posting;
    • hapus_posting;
    • dihapus_posting;
    • setelah_hapus_posting.
    Awalan nama kait

    Selain posisi dan nilai, Anda perlu mengatur awalan kait awalan. Misalnya:

    • wpseo_ oleh Yoast SEO;
    • genesis_ dari kerangka Genesis;
    • advanced_ads_ dari plugin Iklan Lanjutan saya.

    Hal ini mencegah konflik dengan kait di plugin atau tema lain.

    Nama kait dinamis

    Katakanlah sebuah plugin memiliki banyak parameter dan Anda ingin pengembang lain dapat menggunakan filter untuk masing-masing parameter tersebut. Untuk melakukan ini, Anda perlu memanggil apply_filters() untuk setiap parameter. Dimungkinkan juga untuk menggunakan nama kait dinamis, seperti yang dilakukan WordPress dengan fungsi get_options()-nya.

    Fungsi ini mencakup kait berikut:

    • 'pra_pilihan_' . $pilihan;
    • 'pilihan_default_' . $pilihan;
    • 'pilihan_' . $pilihan.

    Mengetahui hal ini, Anda dapat menghubungkan ke option_blogname atau option_blogdescription untuk mengubah judul atau deskripsi blog secara dinamis.

    Ajaib "semua"

    Saat memanggil add_action() dan add_filter(), Anda dapat menggunakan tag khusus sebagai nama hook. Ini akan memastikan bahwa fungsi terkait digunakan untuk setiap hook.

    Nama fungsi

    Saat memanggil fungsi sederhana, tambahkan awalan. Hal ini akan mencegah konflik dengan fungsi pembantu lain yang mengidentifikasinya.
    Di forum Anda dapat melihat nama fungsi yang dimulai dengan my_ . Ubah awalan ini menjadi awalan Anda sendiri.

    add_filter("the_content","bestpluginever_capitalize_all_words");

    Dimungkinkan juga untuk menghubungkan fungsi statis di kelas:

    add_filter("the_content",array("bestpluginever","capitalize_all_words"));

    Pemanggilannya dalam instance kelas ini akan terlihat seperti ini:

    add_filter("the_content",array($bestpluginever,"capitalize_all_words"));

    Anda juga dapat memanggil metode pada instance kelas yang sama, misalnya:

    add_filter("konten_",array($ini,"capitalize_all_words"));

    Pastikan juga fungsinya bersifat publik.

    Menggunakan Fungsi Default PHP

    DI DALAM kasus-kasus tertentu tidak perlu membuat fungsi Anda sendiri. Prosedur pengait ini menggunakan huruf kapital pada setiap huruf pertama judul postingan:

    functionbestpluginever_capitalize_title($title)( returnucwords($title); ) add_filter("the_title","bestpluginever_capitalize_title");

    Karena ucwords() adalah standar fungsi PHP, yang mengambil dan mengembalikan suatu nilai, dapat direduksi menjadi satu baris:

    add_filter("judul_","kata-kata");

    Prioritas

    Parameter ketiga di add_action() dan add_filter() adalah prioritas. Ini menetapkan urutan pemanggilan fungsi yang terkait dengan hook.
    Parameter ini opsional dan defaultnya adalah 10 kecuali ditentukan secara eksplisit. Beberapa fungsi dengan prioritas yang sama akan dipanggil sesuai urutan pendaftarannya di hook.
    Plugin Iklan Tingkat Lanjut menggunakan the_content saat menyisipkan iklan sebelum atau sesudah konten. Parameter ketiganya menentukan apakah iklan atau konten lain disisipkan terlebih dahulu. Untuk menghindari permintaan dukungan mengenai urutan elemen yang "salah", saya menyediakan kemampuan bagi pengguna untuk memilih prioritas filter sebagai opsi.

    Memeriksa penyelesaian suatu tindakan

    Untuk memeriksa apakah tindakan tertentu telah selesai, Anda dapat menggunakan did_action() .
    Fungsi _wp_render_title_tag telah dihubungkan ke wp_head . Ini adalah contoh bagaimana inti WordPress memeriksa apakah tag judul sebenarnya hanya dibuat di sini.

    function_wp_render_title_tag())( if(!current_theme_supports("title-tag"))( return; ) // Ini hanya dapat berfungsi di dalam wp_head.if(!did_action("wp_head")&&!doing_action("wp_head"))( return ; ) echo"".wp_title("|",salah,"kanan")."n";

    did_action($hook) mengembalikan informasi tentang berapa kali tindakan dieksekusi, termasuk panggilan saat ini. Fungsi ini akan mengembalikan 1 jika _wp_render_title_tag() dijalankan di wp_head . do_action('wp_head') memeriksa apakah kita sedang dalam tindakan wp_head. Faktanya, kode di atas adalah pemeriksaan ganda. Oleh karena itu, ini akan dihapus dari WordPress 4.4.0.
    Fungsi do_action() memeriksa apakah suatu tindakan benar-benar terjadi.

    Memeriksa penggunaan filter

    Tidak ada alias untuk filter did_action() dan do_action(). Sebagai gantinya, Anda perlu menggunakan has_filter($hook, $function) . Ketika hanya $hook yang ditentukan, nilai true akan dikembalikan jika ada fungsi yang didaftarkan untuk hook. Salah jika tidak.
    Jika suatu fungsi $function juga diteruskan, maka prioritas fungsi tersebut akan dikembalikan, atau false jika fungsi tersebut tidak terhubung ke hook.
    Saat menambahkan iklan setelah paragraf tertentu Plugin tingkat lanjut Iklan perlu memastikan wpautop() dipanggil sebelum diterapkan fungsi khusus menyaring.

    $wpautop_priority=has_filter("konten_","wpautop"); if($wpautop_priority&&$advads_content_injection_priority()

    • Sergei Savenkov

      semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat