style.php
File saya terlihat seperti ini.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
Ini tidak bekerja, tetapi ketika saya melakukan ini, ini berhasil.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
Apa masalahnya?
Ini adalah mainfile.php
<?php
function test(){
global get_option('bgcolor');?>
<input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
<?php
}
add_action('admin_head','test');
Ini sebenarnya di bagian admin.
style.php
. Jika file gaya tidak dipanggil oleh WordPress, tidak ada fungsi WordPress yang tersedia.Jawaban:
Fungsi WordPress hanya tersedia jika WordPress dimuat. Jika Anda menelepon
style.php
langsung, Anda tidak dapat menggunakan fungsi WordPress.Salah satu cara sederhana untuk memuat WordPress untuk stylesheet yang digerakkan oleh PHP adalah dengan menambahkan titik akhir ke WordPress: URL khusus yang dipesan di mana Anda memuat file templat Anda.
Untuk sampai di sana Anda harus:
Daftarkan titik akhir
'init'
denganadd_rewrite_endpoint()
. Sebut saja'phpstyle'
.Kaitkan ke dalam
'request'
dan pastikan variabel titik akhir'phpstyle'
tidak kosong jika disetel. Bacalah Panduan Lengkap A (Sebagian Besar) yang bagus dari Christopher Davis untuk WordPress Rewrite API untuk memahami apa yang terjadi di sini.Kaitkan ke dalam
'template_redirect'
dan kirim file Anda alih-alih file templat defaultindex.php
.Agar semuanya singkat, saya menggabungkan ketiga langkah sederhana dalam satu fungsi di plugin demo berikut.
Plugin Gaya PHP
Instal plugin, kunjungi
wp-admin/options-permalink.php
sekali untuk menyegarkan aturan penulisan ulang, dan tambahkanstyle.php
ke tema Anda.Mencicipi
style.php
Kunjungi sekarang
yourdomain/phpstyle/
. Keluaran:Tetapi jika Anda pergi ke
yourdomain/phpstyle/blue/
output adalah:Jadi, Anda dapat menggunakan titik akhir untuk memberikan stylesheet yang berbeda dengan satu file tergantung pada nilai
get_query_var( 'phpstyle' )
.Peringatan
Ini akan memperlambat situs Anda. WordPress harus dimuat dua kali untuk setiap kunjungan. Jangan lakukan itu tanpa caching yang agresif.
sumber
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
untuk mempercepat ... dan jika semua fungsi yang diperlukan tersedia ...Anda bisa melakukan ini dengan memuat output melalui
admin-ajax.php
, tetapi pendekatan yang lebih baik adalah dengan menggunakanSHORTINIT
konstanta WordPress sehingga Anda dapat memuat fungsi apa saja yang Anda butuhkan, tetapi Anda harus mencari dan memuatwp-load.php
untuk melakukan ini:Pada titik ini Anda harus yakin menyertakan
wp-includes
file apa pun yang Anda butuhkan untuk mendapatkan opsi tema - yang akan bervariasi tergantung pada cara Anda menyimpan dan mengaksesnya. (Anda mungkin perlu menambahkan lebih banyak ke daftar ini sehingga Anda tidak mendapatkan kesalahan fatal - tetapi ketika Anda akan melakukannya, kesalahan fatal akan memberi tahu Anda file mana yang perlu Anda tambahkan.) Mis.Kemudian setelah Anda memiliki semua fungsi yang Anda butuhkan, Anda dapat menampilkan CSS menggunakan fungsi-fungsi itu ... mis.
Maka Anda dapat membuat file seperti biasa, misalnya:
sumber
../../
diwp-load.php
jalur, fungsi yang diberikan akan menemukannya untuk Anda apa adanya ... tapi seperti saya katakan Anda perlu menemukan dan memasukkan file apa pun yang Anda butuhkan yang memiliki fungsi yang Anda gunakan, misalnya.get_background_image
ada ditheme.php
dll ... saat Anda menambahkan ke CSS Anda mungkin perlu lebih banyak sehingga Anda perlu belajar bagaimana menemukan mereka untuk menggunakan metode ini secara efektif dan andal.