ฟังก์ชั่น WordPress ใช้งานได้ต่อเมื่อโหลด WordPress แล้วเท่านั้น หากคุณโทรหาคุณstyle.php
โดยตรงคุณจะไม่สามารถใช้ฟังก์ชั่น WordPress ได้
วิธีง่ายๆในการโหลด WordPress สำหรับสไตล์ชีทที่ขับเคลื่อนด้วย PHP ของคุณคือการเพิ่ม endpoint ให้ WordPress: URL ที่กำหนดเองและสงวนไว้ซึ่งคุณโหลดไฟล์เทมเพลตของคุณ
ในการไปถึงที่นั่นคุณต้อง:
ลงทะเบียนปลายทางบนด้วย'init'
add_rewrite_endpoint()
Let 's 'phpstyle'
ชื่อ
ขอ'request'
และตรวจสอบให้แน่ใจว่าตัวแปรจุดสิ้นสุด'phpstyle'
ไม่ว่างเปล่าหากมีการตั้งค่าไว้ อ่านคริสโตเฟอร์เดวิสยอดเยี่ยมA (ส่วนใหญ่) คู่มือฉบับสมบูรณ์สำหรับ WordPress Rewrite APIเพื่อทำความเข้าใจว่าเกิดอะไรขึ้นที่นี่
Hook เข้าและส่งไฟล์ของคุณแทนของไฟล์แม่แบบเริ่มต้น'template_redirect'
index.php
เพื่อให้สิ่งต่าง ๆ สั้นลงฉันได้รวมขั้นตอนง่าย ๆ ทั้งสามไว้ในฟังก์ชันเดียวในปลั๊กอินสาธิตต่อไปนี้
ปลั๊กอินสไตล์ 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;
}
ติดตั้งปลั๊กอินเยี่ยมชมwp-admin/options-permalink.php
หนึ่งครั้งเพื่อรีเฟรชกฎการเขียนซ้ำและเพิ่มลงstyle.php
ในธีมของคุณ
ตัวอย่าง 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' );
yourdomain/phpstyle/
ตอนนี้เข้าชม เอาท์พุท:
/* WordPress 3.3.2 */
default
แต่ถ้าคุณไปyourdomain/phpstyle/blue/
ที่ผลลัพธ์คือ:
/* WordPress 3.3.2 */
blue
get_query_var( 'phpstyle' )
ดังนั้นคุณสามารถใช้ปลายทางที่จะส่งมอบสไตล์ชีตที่แตกต่างกับหนึ่งไฟล์ขึ้นอยู่กับมูลค่าของ
ข้อแม้
สิ่งนี้จะทำให้ไซต์ของคุณช้าลง WordPress จะต้องโหลดสองครั้งสำหรับการเยี่ยมแต่ละครั้ง อย่าทำมันโดยไม่ต้องแคชอย่างจริงจัง