Apakah saya tetap bisa memasukkan inline CSS dalam plugin?


21

Biasanya dalam sebuah plugin saya akan menambahkan gaya menggunakan wp_enqueue_style. Namun, saat ini saya sedang membuat sebuah plugin yang hanya membutuhkan beberapa baris CSS dan saya bertanya-tanya apakah mungkin lebih baik untuk melayani style inline untuk menyimpan permintaan. Jelas ada banyak keuntungan menggunakan wp_enqueue_style, tetapi apakah mereka sepadan dengan permintaan tambahan untuk sepotong kecil CSS? Apakah ada 'praktik terbaik' yang diterima di bidang ini?

Jawaban:


14

TL; DR; Enqueue

Menggunakan stylesheet eksternal

  • PRO: Semua gaya Anda berada di satu tempat.
  • PRO: Mengurangi pengkodean halaman web.
  • PRO: Lebih mudah memelihara plugin.
  • PRO: Dapat menggunakan kait untuk mengubah lokasi file.
  • PRO: Dapat menggunakan kait untuk menghapus file.
  • PRO: Dapat menggunakan gaya minify secara otomatis.
  • CON: Mungkin menambahkan permintaan HTTP tambahan (dapat diatasi).

Menggunakan gaya sebaris

  • PRO: Bisa langsung melihat gaya yang diterapkan.
  • PRO: Tidak ada permintaan HTTP tambahan.
  • CON: Tidak dapat menggunakan kait untuk mengubah gaya.
  • CON: Tidak dapat menggunakan kait untuk membatalkan gaya.
  • CON: Tidak dapat mengecilkan gaya sama sekali.
  • CON: Perlu ! Penting untuk mengganti gaya

Biasanya saya akan mengatakan: Tentu, jika Anda adalah satu-satunya yang menggunakannya, silakan dan lakukan sebaris. Tetapi Anda berbicara tentang sebuah plugin yang berarti kode akan dipublikasikan sehingga bertujuan untuk diperpanjang. Saat ini Anda hanya memiliki beberapa garis gaya:

  • CON: Bagaimana jika beberapa menjadi lebih?
  • CON: Bagaimana jika seseorang memperluas plugin Anda?
  • CON: Bagaimana jika seseorang ingin mengubahnya?
  • CON: Bagaimana jika seseorang mencarinya di file css?
  • CON: Bagaimana jika seseorang ingin mengecilkannya secara otomatis?

Karena itu, enqueue. (Lebih disukai Kondisional hanya jika plugin membutuhkannya.) Hal yang sama berlaku untuk JavaScript . (Tapi itu harus dimasukkan dalam catatan kaki jika memungkinkan.)


Apakah saya tetap bisa menggunakan gaya inline di backend?
shea

@ Bungeshea Jika seseorang akan mengubah plugin Anda, mereka mungkin ingin mengubah backend juga;) Pastikan Anda hanya membuat enqueue skrip ketika di backend. Sebagai contoh: function _your_enqueue( $hook )dapat menguji $ hook untuk melihat apakah Anda ada di halaman pilihan Anda. Atau Anda dapat menggunakan current_screen()untuk properti yang lebih sederhana . Masalahnya adalah, Anda BISA melakukan ini, tetapi penggunaan umum adalah sebuah plugin yang terdiri dari file .php untuk kode serveride dan mungkin atau mungkin tidak memiliki file gambar, .js dan .css.
Derk-

1
Anda perhatikan bahwa permintaan http tambahan dapat diatasi - dapatkah Anda mengklarifikasi ini?
Dustin

2
Anda tidak bisa, tetapi pengguna plugin bisa. Ada beberapa plugin dan fungsi yang ditulis, tepat sebelum halaman ditampilkan, dapatkan SEMUA gaya enqueued dan menambahkannya ke file gabungan yang diperkecil. Tidak peduli berapa banyak file CSS yang Anda tambahkan, pemirsa hanya akan melihat satu. Sama untuk javascript. Namun, ini dalam kasus Anda bukan 'masalah' Anda. Ini optimasi yang tidak diperlukan dan juga, permintaan HTTP tambahan agak gagal terhadap semua PRO.
Derk-

1
Tentang kalimat terakhir - gaya AFAIK harus menjadi output di header bukan footer
Mark Kaplun

2

Ini sulit dijawab dan saya benar-benar tidak yakin apakah ada jawaban resmi.

Saya mengerti sentimen tentang menyimpan permintaan tetapi gaya inline hampir selalu menang. Tema atau pengguna akhir akan kesulitan mengubah CSS Anda.

Dengan mengingat hal itu, saya pikir saya akan melakukan ini dalam sebuah plugin yang dirilis untuk umum ...

  1. jika CSS benar-benar penting untuk berfungsinya plugin, seperti halnya dengan tayangan slide, misalnya.

  2. Atau, jika saya juga menyertakan filter dalam plugin yang memungkinkan CSS inline diubah atau dihapus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.