Các chức năng WordPress chỉ khả dụng nếu WordPress được tải. Nếu bạn gọi style.php
trực tiếp, bạn không thể sử dụng chức năng WordPress.
Một cách đơn giản để tải WordPress cho biểu định kiểu do PHP điều khiển của bạn là thêm điểm cuối vào WordPress: URL tùy chỉnh, dành riêng nơi bạn tải tệp mẫu của mình.
Để đến đó bạn phải:
Đăng ký một điểm cuối 'init'
với add_rewrite_endpoint()
. Hãy đặt tên cho nó 'phpstyle'
.
Nối vào 'request'
và đảm bảo biến điểm cuối 'phpstyle'
không trống nếu được đặt. Đọc Hướng dẫn hoàn chỉnh A (Chủ yếu) xuất sắc của Christopher Davis về API Viết lại WordPress để hiểu những gì đang diễn ra ở đây.
Nối vào 'template_redirect'
và phân phối tệp của bạn thay vì tệp mẫu mặc định index.php
.
Để giữ mọi thứ ngắn gọn, tôi đã kết hợp cả ba bước đơn giản trong một chức năng trong plugin demo sau.
Plugin kiểu 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;
}
Cài đặt plugin, truy cập wp-admin/options-permalink.php
một lần để làm mới các quy tắc viết lại và thêm một style.php
chủ đề của bạn.
Mẫu vật 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' );
Bây giờ hãy truy cập yourdomain/phpstyle/
. Đầu ra:
/* WordPress 3.3.2 */
default
Nhưng nếu bạn đi đến yourdomain/phpstyle/blue/
đầu ra là:
/* WordPress 3.3.2 */
blue
Vì vậy, bạn có thể sử dụng điểm cuối để phân phối các bảng định kiểu khác nhau với một tệp tùy thuộc vào giá trị của get_query_var( 'phpstyle' )
.
Hãy cẩn thận
Điều này sẽ làm chậm trang web của bạn. WordPress phải được tải hai lần cho mỗi lần truy cập. Đừng làm điều đó mà không tích cực lưu trữ.