Функції WordPress доступні лише у випадку завантаження WordPress. Якщо ви телефонуєте style.phpбезпосередньо, ви не можете використовувати функцію WordPress.
Один простий спосіб завантаження WordPress для вашої таблиці стилів, керований PHP, - додати кінцеву точку до WordPress: спеціальна зарезервована URL-адреса, де ви завантажуєте файл шаблону.
Щоб потрапити туди, ви повинні:
Зареєструвати кінцеву точку 'init'з add_rewrite_endpoint(). Давайте назвемо це 'phpstyle'.
Підключіть 'request'і переконайтеся, що змінна кінцевої точки 'phpstyle'не порожня, якщо вона встановлена. Прочитайте чудове повне керівництво по API для перезапису WordPress Крістофера Девіса, щоб зрозуміти, що тут відбувається.
Підключіть 'template_redirect'і доставіть файл замість файлу шаблону за замовчуванням index.php.
Щоб зробити короткий, я поєднав усі три простих кроки в одній функції в наступному демо-плагіні.
PHP Стиль Plugin
<?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' ).
Caveat
Це сповільнить ваш сайт. WordPress потрібно завантажувати два рази за кожен візит. Не робіть це без агресивного кешування.