Bagaimana Menggunakan Aksi Aksi WordPress dalam Penyesuaian Tema
Tema kanak-kanak WordPress memberikan cara yang agak mudah untuk menyesuaikan rupa dan rasa tema. Jika pilihan tema tidak memberikan anda pilihan reka bentuk yang mencukupi, anda hanya boleh menambah peraturan baru pada fail gaya lalai tema kanak-kanak yang dipanggil style.css. Tetapi apa yang berlaku apabila anda juga mahu mengubah suai fungsi tema? Itulah salah satu kes apabila tindakan WordPress datang untuk membantu anda.
WordPress telah menjadi sangat popular sebahagiannya kerana kesesuaiannya yang tinggi. Teras WordPress dimuatkan dengan cangkuk yang berbeza yang membolehkan pemaju mengubah atau meningkatkan fungsi lalai. Selain itu, kami dibenarkan untuk memasukkan cangkuk adat dalam tema dan plugin kami membantu pemaju lain untuk dengan mudah menyesuaikan kod kami dengan keperluan mereka.
Mengenai WordPress Hooks
Cangkuk WordPress berfungsi agak serupa dengan cangkuk kehidupan sebenar dalam erti kata bahawa anda boleh menangkap ikan yang anda inginkan di tempat yang betul jika anda menggunakannya dengan betul.
Awak boleh keluarkan fungsi yang ditangkap (contohnya, anda boleh mengalih keluar bar admin WordPress untuk pengguna peringkat rendah), anda boleh biarkan ia utuh dan meningkatkannya dengan fungsi anda sendiri (contohnya, anda boleh menambah lebih banyak menu atau kawasan widget ke tema), atau anda boleh mengatasinya (contohnya, anda boleh mengubah tingkah laku fungsi teras).
Terdapat dua jenis cangkuk yang berbeza di WordPress: tindakan dan penapis. Dalam catatan ini kita akan melihat bagaimana kita dapat gunakan cangkuk tindakan dalam penyesuaian tema.
Bagaimana WordPress Hooks berfungsi
Untuk menggunakan bahasa yang sangat mudah, tindakan nyatakan itu sesuatu telah berlaku semasa kitar hayat halaman WordPress: bahagian tertentu tapak telah dimuatkan, pilihan atau tetapan tertentu telah ditetapkan, plugin atau widget telah dimulakan, dan sebagainya.
Penapis adalah berbeza dari tindakan dalam sifat mereka. Mereka digunakan untuk lulus data melalui, dan mengubah, mengurus atau memintas sebelum menyerahkannya ke skrin atau menyimpan data pengguna ke dalam pangkalan data.
Di setiap mercu tanda penting dalam kitar hayat halaman WordPress terdapat sama ada tindakan atau a penapis cangkuk ke mana kita boleh tambah kod tersuai kami untuk mengubah suai tingkah laku lalai Keperluan kami.
Tindakan dan penapis tertentu yang dijalankan semasa permintaan bergantung pada laman mana yang diminta oleh ejen pengguna: misalnya dalam satu cangkuk permintaan pos yang berkaitan dengan jawatan tunggal tersedia, tetapi cangkuk yang berkaitan dengan bahagian lain dari tapak (contohnya kawasan admin) tidak.
Cari Cangkuk Tindakan
Rujukan Aksi Codex WordPress memberikan gambaran terperinci tentang tindakan yang berjalan melalui permintaan yang berbeza. Yang penting ialah jika kita ingin mencapai tugas yang perlu kita lakukan cangkuk ke tempat yang betul, tidak sebelum atau selepas itu, jika tidak tindakan itu tidak akan selesai.
Jadi misalnya jika kita mahu tambah kod Google Analytics kami ke tapak kita perlu cangkuk tindakan kami tepat sebelum footer dimuatkan.
Sekiranya kita bercakap tentang penyesuaian tema, cangkuk tindakan boleh datang dari dua tempat berbeza: dari Teras WordPress dan tema itu sendiri. Terdapat tema yang tidak mempunyai kait sama sekali, tetapi yang lain memberikan pemaju dengan beberapa atau banyak - selalunya pilihan tema penulis. Tema Twenty Fifteen lalai hanya mempunyai satu cangkuk tindakan untuk penyesuaian footer di bawah nama 'twentyfifteen_credits'.
Jika anda suka melayari kod sumber, anda juga boleh mencari cangkuk tindakan dengan mudah. Cangkuk tindakan ditambah kepada kod dengan fungsi do_action () WordPress.
Jika anda menjalankan carian pantas untuk ungkapan 'do_action' dalam editor kod yang lebih maju - seperti yang saya lakukan dalam Eclipse di bawah - anda boleh melihat senarai tentang tempat di mana anda boleh menyambung fungsi tersuai anda ke inti. Saya mencari di / wp-termasuk / folder, tetapi anda juga boleh menjalankan pencarian untuk / wp-admin / folder yang mengandungi kait tindakan yang berkaitan dengan papan pemuka WordPress (kawasan admin).
Perkara yang baik adalah bahawa nama-nama kait tindakan biasanya cukup jelas, tetapi ada biasanya komen bagus di dalam kod yang boleh memberi anda lebih banyak pengetahuan sama ada tindakan akit yang diberikan adalah baik untuk sebab anda ingin menggunakannya.
Sebagai contoh, komen kod sebelum tindakan aksi 'widgets_init' mengatakan bahawa ia “kebakaran selepas semua widget WordPress lalai telah didaftarkan”. Sekiranya anda mengintip kod sebelum cangkuk tindakan ini, anda dapat mencari semua permulaan widget WP lalai sebelum ia - supaya anda dapat memastikan komen itu tidak terletak, dan jika anda ingin mendaftarkan widget tersuai anda sendiri, ini akan menjadi tempat yang betul.
Dalam banyak kes, kod sumber memberikan kita lebih banyak maklumat daripada Codex, jadi ia boleh menjadi idea yang baik untuk belajar bagaimana untuk dengan cepat menavigasi di dalamnya.
Tambah Tindakan Anda Sendiri
Apabila anda ingin menambah tindakan anda sendiri, anda perlu buat fungsi tersuai dan mengikat fungsi ini ke kait tindakan tertentu dengan menggunakan fungsi add_action () WordPress. Tindakan tersuai yang ditambahkan dengan fungsi add_action () biasanya dicetuskan di tempat kejadian apabila teras memanggil fungsi do_action () yang sesuai.
Mari lihat contoh mudah.
Cara Cari Cangkuk Tindakan yang Anda Perlu
Katakan anda mahu menambah favicon tersuai anda ke laman web anda. Pertama, anda perlu mencari cangkuk aksi yang betul yang anda boleh mengikat fungsi anda sendiri.
Mari berfikir. Jika anda mahu menambah favicon ke halaman HTML biasa di mana anda meletakkannya? Sudah tentu, anda perlu meletakkannya di dalam
seksyen fail HTML dengan markup berikut:Jadi cangkuk tindakan yang anda perlukan mestilah berkaitan dengan pemuatan seksyen.
(1) Buka Rujukan Tindakan, dan lihat apa yang ditawarkannya. Kami bernasib baik, seolah-olah kita melayari tindakan itu, kita hanya dapat mencari satu, wp_head, yang berdasarkan namanya mempunyai kemungkinan untuk dihubungkan dengan pemuatan
seksyen.(2) Pasti, mari semak dokumentasi di WordPress Codex. Codex menasihatinya “anda menggunakan cangkuk ini dengan mempunyai fungsi output echo anda ke penyemak imbas”, jadi sekarang ia seolah-olah sempurna untuk kita. Tetapi mari kita periksa di kod sumber.
(3) Oleh kerana cangkuk ini tidak berkaitan dengan kawasan admin, kita perlu menjalankan carian kami di / wp-termasuk / folder. Jika kita mencari perkataan 'wp-head' kita akan mendapat banyak keputusan kerana tindakan spesifik ini digunakan oleh WP Core berkali-kali.
Kita perlu mencari tempat di mana ia ditakrifkan, jadi cari ekspresi do_action ('wp_head'. Perhatikan bahawa kami tidak menyelesaikan kurungan, kerana kami tidak dapat memastikan jika tindakan ini mempunyai parameter atau tidak.
Gerhana mengembalikan hanya satu hasil yang boleh didapati di dalamnya /wp-includes/general-template.php fail. Komen sebelum takrif tindakan tindakan mengatakan bahawa ia “mencetak skrip atau data dalam tag kepala pada bahagian hadapan”, jadi sekarang kita boleh mati-pasti itu wp_head adalah cangkuk tindakan yang kita perlukan.
Memeriksa Untuk Parameter
Apabila anda menambah tindakan anda sendiri, anda juga perlu memastikan jika cangkuk yang anda mahu gunakan mengambil parameter atau tidak. Anda boleh dengan mudah mencari ini dengan melihat fungsi do_action ().
Sintaks fungsi do_action () adalah seperti berikut:
do_action ('name_of_action' [, $ parameter1, $ parameter2, ...])
Hanya nama tindakan yang diperlukan, parameter adalah pilihan. Sekiranya anda mendapati hujah-hujah dalam panggilan yang berkaitan dengan fungsi do_action (), anda perlu masukkan mereka dalam pengisytiharan fungsi tersuai yang anda buat.
Jika anda tidak menemui apa-apa, maka fungsi tersuai anda mesti berfungsi tanpa hujah. Dalam do_action () definisi wp_head action hook, tidak ada parameter.
Mari kita bandingkan dengan cangkuk tindakan yang mengambil parameter. Cakera tindakan yang disebut 'wp_register_sidebar_widget' mengambil satu parameter yang selalu anda lalui untuk fungsi tersuai anda mengikat hook.
Mari kita lihat perbezaan dalam sintaks do_action () dalam dua kes:
do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);
Dalam kes pertama tidak ada parameter, jadi fungsi tersuai akan menggunakan sintaks berikut:
fungsi my_function_without_parameters () ...
Dalam kes kedua terdapat satu parameter yang selalu anda lalui sebagai hujah dalam pengisytiharan fungsi tersuai anda:
fungsi my_function_with_parameters ($ widget) ...
Cara Hook Fungsi Tersuai Anda Di
Sekarang kita tahu semua yang kita perlukan. Mari buat fungsi khusus kami yang akan memaparkan favicon di laman web kami.
Pertama, buat fungsi baru tanpa sebarang argumen, kemudian mengikatnya ke cangkuk tindakan wp_head dengan bantuan fungsi add_action () WordPress.
fungsi custom_add_favicon () echo ''; add_action ('wp_head', 'custom_add_favicon');
Anda perlu lulus nama itu daripada cangkuk tindakan kepada fungsi add_action () sebagai hujah pertama, maka anda perlu tambah nama fungsi tersuai anda.
Ini adalah dua parameter tambahan add_action (). Ia mempunyai dua parameter pilihan juga, keutamaan dan hujah-hujah yang diterima. Mari lihat cara menggunakannya.
Tentukan Keutamaan
Ia berlaku dalam banyak kes bahawa terdapat lebih dari satu tindakan terikat dengan cangkuk yang sama. Jadi yang mana satu akan dilaksanakan terlebih dahulu? Di sinilah kita boleh menggunakannya parameter pilihan utama keutamaan $ fungsi add_action ().
Kami menambah keutamaan sebagai integer positif, nilai lalai ialah 10. Jika kita mahu tindakan yang akan dilaksanakan lebih awal, kita memberikan nilai yang lebih rendah, jika kita mahu ia dilaksanakan kemudian, kita memberikan nilai yang lebih tinggi.
Oleh itu, jika kami fikir bahawa favicon perlu berada di sana lebih awal, kami dapat meningkatkan panggilan add_action () kami sebelumnya dengan cara berikut:
add_action ('wp_head', 'custom_add_favicon', 5);
Sila ambil perhatian bahawa keutamaan sentiasa perlu menetapkan relatif kepada fungsi tersuai yang lain yang menggunakan cangkuk tindakan yang sama.
Tambah Bilangan Argumen yang Diterima
Anda dikehendaki menambah bilangan hujah-hujah yang diterima sekiranya anda menggunakan cangkuk tindakan yang mengambil parameter. Mari lihat contoh yang kami gunakan sebelum ini.
Cakera tindakan 'wp_register_sidebar_widget' mengambil satu parameter, jadi apabila kita mengikat fungsi tersuai kita ke cangkuk ini, kita juga perlu memasukkan ini sebagai hujah apabila kita memanggil fungsi add_action ().
Kod kami dalam kes ini akan kelihatan seperti ini:
fungsi my_sidebar_widget_function ($ widget) // Your code add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1);
Perhatikan bahawa kita mesti juga menambah keutamaan (kami memilih lalai 10 di sini) untuk memastikan bahawa WordPress mengetahui apa yang setiap parameter bermakna. Sekiranya kita menolak keutamaan, WordPress boleh menganggap bahawa 1 adalah keutamaan yang tidak benar, kerana ia menunjukkan bilangan hujah yang diterima.
Kesimpulannya
Anda boleh membuat banyak eksperimen dengan cangkuk tindakan dalam penyesuaian tema. Contohnya, anda boleh menambah skrip (JS) dan gaya (CSS) anda dengan cangkuk tindakan wp_enqueue_scripts, atau kod Google Analytics anda dengan cangkuk tindakan wp_footer.
Anda bukan sahaja boleh tambah tindakan anda sendiri, tetapi anda juga boleh keluarkan fungsi lengkap dari teras WordPress dengan menggunakan fungsi remove_action () yang menggunakan logik yang sama sebagai add_action ().
Jika anda seorang pengarang tema, dan anda ingin membuat tema yang boleh diperluas, ia boleh menjadi idea yang baik tambah cangkuk tindakan tersuai anda sendiri ke fail templat yang sesuai dengan fungsi do_action ().
Jika anda mahu berbuat demikian, fikirkan dengan teliti tentang parameter yang pemaju lain yang akan menggunakan tema anda perlu lulus sebagai argumen apabila mereka mahu mengaitkan fungsi fungsinya.
Semasa merancang lokasi kait tindakan tersuai tema anda, jangan lupa tidak masuk akal untuk memasukkan cangkuk tema tersuai di tempat yang sama di mana Core WordPress sendiri mempunyai cangkuk sendiri.