Rumah >Tutorial CMS >WordTekan >Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

Christopher Nolan
Christopher Nolanasal
2025-02-16 11:53:09225semak imbas

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

Takeaways Key

    Bahagian ketiga siri boilerplate plugin WordPress memberi tumpuan kepada pelaksanaan fungsi awam yang menghadapi plugin, yang termasuk mengambil semula keutamaan pengguna dan memaparkan notis dengan sewajarnya pada paparan pos tunggalnya.
  • Panduan ini menerangkan cara menyediakan tema untuk ujian, bagaimana untuk menyambungkan penapis the_content, bagaimana untuk mengubahsuai kandungan secara kondusif, dan bagaimana untuk mengira perbezaan hari antara masa semasa dan masa yang diubahsuai terakhir.
  • Gaya teks notis juga dibincangkan, dengan penulis memberikan panduan gaya mudah untuk memadankan reka bentuk tema keseluruhan. Penulis juga mencadangkan penambahbaikan yang berpotensi, seperti teks dinamik untuk konteks yang berbeza dan notis yang tidak dapat dibatalkan.
  • Penulis menyimpulkan dengan menonjolkan manfaat boilerplate plugin WordPress, mencatatkan struktur yang jelas, pematuhan terhadap amalan terbaik, dan aspek penjimatan masa yang mempunyai titik permulaan yang kukuh untuk pembangunan plugin.
Di bahagian kedua siri ini, kami menyediakan fungsi pentadbir mudah untuk plugin kami. Kami menyediakan pengguna dengan halaman pilihan di mana mereka boleh tweak plugin mengikut keutamaan mereka.

Jika anda terlepas Bahagian 1 dan 2, sila cari mereka di bawah:

    plugin wordpress boilerplate bahagian 1: mempercepatkan pembangunan menggunakan boilerplate plugin wordpress
  • Plugin WordPress Boilerplate Bahagian 2: Membangunkan Plugin WordPress
Untuk artikel ini, kami akan melaksanakan fungsi awam yang menghadapi plugin. Ini bermakna kita akan mengambil keutamaan pengguna, menentukan sama ada jawatan tertentu sudah lapuk atau tidak, dan memaparkan notis dengan sewajarnya pada paparan pos tunggalnya. Mari kita mulakan!

Menyediakan tema

kita perlu menyediakan tema kita supaya kita dapat mengujinya kemudian. Kami akan menggunakan dua puluh lima belas tema yang dihantar secara lalai dengan WordPress. Daripada mengisi jawatan secara manual, kami akan menggunakan data ujian unit tema yang disediakan oleh pasukan semakan tema untuk mengisi jawatan.

kita perlu memuat turun tema-unit-test-data.xml yang disediakan pada halaman codex di atas dan mengimportnya ke dalam pemasangan WordPress kami. Fungsi import terbina dalam WordPress boleh didapati dengan menavigasi ke alat> import dari bar sisi.

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir Kami akan dibentangkan dengan pelbagai pilihan, dan kerana kami mengimport fail eksport WordPress, kami akan memilih WordPress. Bergantung pada pemasangan WordPress, pop timbul plugin akan dipaparkan jika kami tidak mempunyai plugin pengimport WordPress yang dipasang. Teruskanlah dan pasangkan plugin terlebih dahulu jika anda tidak memilikinya dan kami akan meneruskan proses pengimportan sebenar sebaik sahaja ia selesai.

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

Ini adalah halaman import WordPress lalai, jadi kami perlu memilih tema-unit-test-data.xml yang dimuat turun sebelum ini dan klik pada butang "Muat naik dan import".

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir Skrin kedua akan dibentangkan. Jangan risau tentang bahagian "Menetapkan penulis" kerana kita boleh meninggalkannya sebagai lalai. Dalam bahagian "Lampiran Import", pastikan untuk menandakan kotak semak "muat turun dan mengimport lampiran fail" supaya semua lampiran luaran akan dimuat turun dan diimport ke perpustakaan media.

Tekan butang "Hantar" dan tunggu sehingga proses pengimportan dilakukan dengan jayanya.

Sekarang kita sudah bersedia untuk menulis kod yang memaparkan notis kita.

mengaitkan ke dalam penapis the_content

Menggunakan penapis the_content adalah cara yang sempurna untuk mengubah kandungan jawatan yang dipaparkan kepada pengguna. Seperti tutorial sebelumnya, kami akan menambah cangkuk ke loader kelas boilerplate, dengan satu -satunya perbezaan ialah kaedah define_public_hooks akan digunakan dan bukannya define_admin_hooks.

Tambahkan baris kod ini ke dalam kaedah:

<span>$this->loader->add_action( 'the_content', $plugin_public, 'the_content' );</span>
Ini bermakna, kita perlu melaksanakan kaedah the_content awam ke dalam kelas usang_notice_public kami. Buka awam/kelas-out-notis-public.php dan ubah suai dengan sewajarnya.

mengubahsuai kandungan

secara kondusif

Kerana penapis the_content digunakan oleh pelbagai plugin, dan teras WordPress dalaman, kita perlu berhati -hati dalam memasukkan kandungan tersuai kami ke dalamnya.

kita perlu memastikan bahawa kita hanya memasukkan teks notis ketinggalan zaman apabila satu jawatan dipaparkan, bukan pada indeks pos blog. Untuk melakukan itu, kita boleh menapisnya dengan menggunakan fungsi IS_Main_Query. Fungsi ini berguna apabila kita perlu menentukan sama ada pertanyaan berjalan adalah yang utama atau pertanyaan menengah/adat.

Satu lagi perkara yang perlu kita pertimbangkan ialah kita hanya akan memaparkan teks notis untuk satu pandangan pos pos pos, jadi iS_singular ('post') pengesahan akan menjadi sempurna untuk pekerjaan.

Ini adalah kaedah the_content yang terkini yang terkandung di dalam kelas usang_notice_public.

<span>public function the_content( $post_content ) {
</span>
		<span>if ( is_main_query() && is_singular('post') ) {
</span>			<span>// do something
</span>		<span>}
</span>
        <span>return $post_content;
</span>	<span>}</span>
mengira perbezaan hari

Sebelum kita memulakan, mari kita tetapkan kedudukan kita untuk notis muncul sebagai "sebelum" jawatan, dan bilangan hari ambang hingga 30.

Pertama, kita perlu mengambil tetapan yang disimpan plugin kami. Fungsi get_option akan melakukan pekerjaan itu, dan sebagai langkah yang selamat, kita akan lulus nilai lalai sebagai hujah kedua untuk mendapatkan_option.

<span>$this->loader->add_action( 'the_content', $plugin_public, 'the_content' );</span>

Untuk mengira perbezaan hari antara masa semasa dan masa yang diubahsuai terakhir, kita akan memberi instantiasi dua objek DateTime. Kita boleh mendapatkan pengukuran yang tepat mengenai perbezaan masa menggunakan kaedah diff yang dibina ke kelas DateTime. Perhatikan bahawa kelas DateTime hanya tersedia pada php> = 5.3.0.

<span>public function the_content( $post_content ) {
</span>
		<span>if ( is_main_query() && is_singular('post') ) {
</span>			<span>// do something
</span>		<span>}
</span>
        <span>return $post_content;
</span>	<span>}</span>

$ date_diff adalah contoh kelas DateInterval supaya kami akan mempunyai pelbagai data yang tersedia berkaitan dengan perbezaan masa. Sekiranya kita pergi ke var_dump pembolehubah $ date_diff, inilah yang harus kita dapatkan, bergantung pada jawatan yang sedang anda lihat.

<span>$position  = get_option( 'outdated_notice_position', 'before' );
</span>	<span>$days      = (int) get_option( 'outdated_notice_day', 0 );</span>

Kami hanya berminat dengan nilai hari kerana ia akan digunakan sebagai perbandingan terhadap ambang hari -hari kami. Seperti yang saya katakan sebelum ini, kami akan membandingkannya supaya kami dapat menggunakan kelas tertentu untuk elemen div notis kami untuk menggayakannya secara berbeza antara jawatan.

<span>$date_now  = new DateTime( current_time('mysql') );
</span>	<span>$date_old  = new DateTime( get_the_modified_time('Y-m-d H:i:s') );
</span>	<span>$date_diff = $date_old->diff( $date_now );</span>

Blok perbandingan mudah ini cukup untuk menentukan kelas mana yang hendak digunakan untuk Div ​​kami. Satu -satunya perkara yang tersisa sekarang adalah untuk benar -benar membina HTML untuk ditambah ke kandungan pos.

Untuk teks siap terjemahan yang lebih baik, kami akan menggunakan fungsi _n untuk memilih teks yang betul untuk digunakan bergantung kepada bilangan hari sejak jawatan itu dikemas kini terakhir. Kemudian, kita akan membungkus teks notis dalam divenya sendiri supaya kita dapat menggayakannya kemudian. Jangan ragu untuk mengubah teks notis dengan keinginan anda sendiri.

<span>object(DateInterval)#286 (8) {
</span>	  <span>["y"]=>
</span>	  <span>int(0)
</span>	  <span>["m"]=>
</span>	  <span>int(0)
</span>	  <span>["d"]=>
</span>	  <span>int(12)
</span>	  <span>["h"]=>
</span>	  <span>int(23)
</span>	  <span>["i"]=>
</span>	  <span>int(17)
</span>	  <span>["s"]=>
</span>	  <span>int(22)
</span>	  <span>["invert"]=>
</span>	  <span>int(0)
</span>	  <span>["days"]=>
</span>	  <span>int(12)
</span>	<span>}</span>

Pemboleh ubah notis $ kini harus mengandungi markup yang akan kami masukkan ke kandungan pos kami. Satu -satunya perkara yang perlu dilakukan ialah menambahkannya.

<span>if ( $date_diff->days > $days ) {
</span>		<span>$class = 'is-outdated';
</span>	<span>} else {
</span>		<span>$class = 'is-fresh';
</span>	<span>}</span>

sebagai rekap, ini adalah bagaimana kaedah the_content di dalam usang_notice_public akhirnya harus kelihatan.

<span>// Filter the text
</span>	<span>$notice = sprintf(
</span>				<span>_n(
</span>					<span>'This post was last updated %s day ago.',
</span>					<span>'This post was last updated %s days ago.',
</span>					<span>$date_diff->days,
</span>					<span>'outdated-notice'
</span>				<span>),
</span>				<span>$date_diff->days
</span>			<span>);
</span>
	<span>// Add the class
</span>	<span>$notice = '<div >' . $notice . '</div>';
</span>	<span>$notice = sprintf( $notice, $class );</span>

Cuba melayari beberapa halaman untuk melihat apakah plugin kami berfungsi seperti yang dimaksudkan. Inilah yang saya lihat ketika melayari pos "Hello World" di URL /2015/05/11/Hello-World/.

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

menggayakan teks notis

Kami akan memohon beberapa gaya mudah untuk div notis. Untuk melakukan itu, kami tidak akan mengubah apa -apa berkaitan dengan saiz fon atau keluarga fon yang sudah digunakan. Plus, kami akan meminjam skema warna bootstrap dan gaya buat masa ini.

Buka fail-fail notis-public.css yang terkandung di dalam folder awam/CSS dan tambahkan peraturan ini.

<span>if ( 'after' == $position ) {
</span>		<span>$post_content .= $notice;
</span>	<span>} else {
</span>		<span>$post_content = $notice . $post_content;
</span>	<span>}</span>

Kami juga memerlukan dua gaya yang berbeza untuk mewakili pasca-fresh, yang merupakan satu gaya untuk .is-segar dan satu lagi untuk .is-outdated. Coretan ini harus melakukan silap mata, memberikan kita skema warna hijau yang bagus untuk jawatan segar, dan skema warna merah untuk jawatan yang sudah lapuk.

<span>public function the_content( $post_content ) {
</span>
		<span>if ( is_main_query() && is_singular('post') ) {
</span>			<span>$position  = get_option( 'outdated_notice_position', 'before' );
</span>			<span>$days      = (int) get_option( 'outdated_notice_day', 0 );
</span>			<span>$date_now  = new DateTime( current_time('mysql') );
</span>			<span>$date_old  = new DateTime( get_the_modified_time('Y-m-d H:i:s') );
</span>			<span>$date_diff = $date_old->diff( $date_now );
</span>
			<span>if ( $date_diff->days > $days ) {
</span>				<span>$class = 'is-outdated';
</span>			<span>} else {
</span>				<span>$class = 'is-fresh';
</span>			<span>}
</span>
			<span>// Filter the text
</span>			<span>$notice = sprintf(
</span>						<span>_n(
</span>							<span>'This post was last updated %s day ago.',
</span>							<span>'This post was last updated %s days ago.',
</span>							<span>$date_diff->days,
</span>							<span>'outdated-notice'
</span>						<span>),
</span>						<span>$date_diff->days
</span>					<span>);
</span>
			<span>// Add the class
</span>			<span>$notice = '<div >' . $notice . '</div>';
</span>			<span>$notice = sprintf( $notice, $class );
</span>
			<span>if ( 'after' == $position ) {
</span>				<span>$post_content .= $notice;
</span>			<span>} else {
</span>				<span>$post_content = $notice . $post_content;
</span>			<span>}
</span>		<span>}
</span>
        <span>return $post_content;
</span>	<span>}</span>

mari kita menyegarkan pandangan pos dan lihat bagaimana ia digayakan. Contoh jawatan segar dan ketinggalan zaman:

Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir

itu! Kami kini mempunyai plugin berfungsi sepenuhnya yang dibangunkan berdasarkan plugin WordPress Plugin Boilerplate.

penambahbaikan

Terdapat pelbagai perkara yang boleh diperbaiki berdasarkan apa yang telah kami lakukan setakat ini. Antaranya ialah:

  • teks dinamik untuk konteks yang berbeza, di mana kita boleh menggunakan teks yang berbeza untuk notis yang sudah lapuk.
  • Keluarkan enqueuing skrip notis-public.js yang ketinggalan zaman kerana ia tidak digunakan.
  • notis yang tidak dapat dibatalkan supaya ia tidak mengganggu pengalaman pengguna semasa membaca siaran.

Kesimpulan

Boilerplate plugin WordPress menyediakan titik permulaan yang sempurna untuk membangunkan sebarang plugin dari awal. Dalam bahagian terakhir siri ini, kami selesai dengan membangunkan fungsi awam yang menghadapi plugin kami. Pengubahsuaian walaupun agak mudah, dilakukan dalam sedikit masa, sementara masih mengekalkan corak OOP yang ditubuhkan oleh boilerplate itu sendiri dan mematuhi piawaian dan amalan terbaik.

Salinan penuh kod boleh didapati seperti biasa di GitHub di cawangan bahagian-3.

Soalan Lazim (Soalan Lazim) Mengenai WordPress Plugin Boilerplate

Apakah boilerplate plugin WordPress dan mengapa penting? Ia menyediakan struktur yang jelas dan konsisten yang mudah difahami dan bekerja dengan, terutamanya bagi pemaju yang baru untuk pembangunan plugin WordPress. Ia penting kerana ia menjimatkan masa dan usaha dengan menyediakan titik permulaan yang kukuh, mengurangkan keperluan untuk menulis kod biasa dari awal. Ia juga menggalakkan amalan terbaik dalam pengekodan, meningkatkan prestasi, keselamatan, dan mengekalkan plugin anda. Anda perlu terlebih dahulu memuat turunnya dari repositori GitHubnya. Setelah dimuat turun, anda boleh menamakan semula direktori dan fail boilerplate untuk memadankan spesifik plugin anda. Kod boilerplate adalah baik, membimbing anda di mana untuk meletakkan kod tersuai anda. Ingat untuk mengemas kini tajuk plugin dalam fail plugin utama untuk mencerminkan butiran plugin anda.

boleh saya gunakan boilerplate plugin wordpress untuk projek komersial? dan dilesenkan di bawah GPL, yang bermaksud anda boleh menggunakannya untuk kedua -dua projek peribadi dan komersial. Walau bagaimanapun, amalan yang baik untuk mengakui boilerplate dalam dokumentasi atau kredit plugin anda.

Bagaimana saya boleh menyumbang kepada projek boilerplate plugin WordPress? Anda boleh menyumbang dengan melaporkan pepijat, mencadangkan penambahbaikan, atau mengemukakan permintaan tarik pada repositori GitHubnya. Sebelum menyumbang, pastikan anda membaca dan memahami garis panduan sumbangan projek. dan boleh diurus. Ia terdiri daripada tiga direktori utama: 'admin', 'termasuk', dan 'awam'. Direktori 'Admin' mengandungi fail CSS, JavaScript, dan PHP untuk bahagian khusus admin plugin. Direktori 'termasuk' digunakan untuk menentukan kelas plugin teras dan fungsi bersama lain. Direktori 'awam' mengandungi fail untuk bahagian yang menghadap ke plugin. Ciri ke plugin anda, anda biasanya akan membuat kelas baru untuk ciri tersebut dalam direktori 'Termasuk'. Kelas ini harus menentukan semua cangkuk yang perlu dijalankan oleh ciri anda. Kemudian, anda meneliti kelas ini dalam kelas plugin utama dan menambahnya ke fungsi 'Run'. Pendekatan modular ini menjadikannya mudah untuk menambah, membuang, atau mengubah suai ciri dalam plugin anda. mengendalikan pilihan plugin dalam direktori 'admin'. Kelas ini termasuk fungsi untuk mendaftarkan tetapan, menentukan bahagian dan bidang, dan menjadikan halaman tetapan. Anda boleh memperluaskan kelas ini untuk mengendalikan pilihan khusus plugin anda.

Bagaimana saya mengantarabangsakan plugin saya dengan boilerplate plugin WordPress? direktori. Kelas ini memuatkan domain teks plugin anda, yang membolehkannya diterjemahkan ke dalam bahasa lain. Anda hanya perlu menggantikan domain teks pemegang tempat di dalam boilerplate dengan domain teks plugin anda.

Bagaimana saya boleh memasangkan skrip dan gaya dengan boilerplate plugin wordpress? untuk memaparkan skrip dan gaya dalam direktori 'admin' dan 'awam'. Kelas -kelas ini termasuk fungsi untuk mendaftar dan memasangkan skrip dan gaya anda, memastikan mereka dimuatkan di tempat yang betul dan pada masa yang tepat.

Bagaimana saya menyahpasang plugin saya dengan bersih dengan plugin boilerplate plugin WordPress?

Plugin WordPress Plugin Boilerplate termasuk fail uninstall.php yang dijalankan apabila plugin anda tidak dipasang dari papan pemuka WordPress. Fail ini harus mengandungi sebarang kod pembersihan, seperti mengeluarkan pilihan plugin atau jadual pangkalan data. Ini memastikan bahawa plugin anda tidak meninggalkan jejak di belakang apabila ia tidak dipasang.

Atas ialah kandungan terperinci Plugin WordPress Boilerplate Bahagian 3: Langkah Terakhir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn