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'
dengan add_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 default index.php
.
Agar semuanya singkat, saya menggabungkan ketiga langkah sederhana dalam satu fungsi di plugin demo berikut.
Plugin Gaya PHP
<?php # -*- coding: utf-8 -*-
/*
* Plugin Name: PHP Style
* Description: Make your theme's 'style.php' available at '/phpstyle/'.
*/
add_action( 'init', 'wpse_54583_php_style' );
add_action( 'template_redirect', 'wpse_54583_php_style' );
add_filter( 'request', 'wpse_54583_php_style' );
function wpse_54583_php_style( $vars = '' )
{
$hook = current_filter();
// load 'style.php' from the current theme.
'template_redirect' === $hook
&& get_query_var( 'phpstyle' )
&& locate_template( 'style.php', TRUE, TRUE )
&& exit;
// Add a rewrite rule.
'init' === $hook && add_rewrite_endpoint( 'phpstyle', EP_ROOT );
// Make sure the variable is not empty.
'request' === $hook
&& isset ( $vars['phpstyle'] )
&& empty ( $vars['phpstyle'] )
&& $vars['phpstyle'] = 'default';
return $vars;
}
Instal plugin, kunjungi wp-admin/options-permalink.php
sekali untuk menyegarkan aturan penulisan ulang, dan tambahkan style.php
ke tema Anda.
Mencicipi style.php
<?php # -*- coding: utf-8 -*-
header('Content-Type: text/css;charset=utf-8');
print '/* WordPress ' . $GLOBALS['wp_version'] . " */\n\n";
print get_query_var( 'phpstyle' );
Kunjungi sekarang yourdomain/phpstyle/
. Keluaran:
/* WordPress 3.3.2 */
default
Tetapi jika Anda pergi ke yourdomain/phpstyle/blue/
output adalah:
/* WordPress 3.3.2 */
blue
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.