Функции WordPress доступны только в том случае, если WordPress загружен. Если вы звоните style.phpнапрямую, вы не можете использовать функцию WordPress.
Один простой способ загрузить WordPress для вашей таблицы стилей, управляемой PHP, - это добавить конечную точку в WordPress: пользовательский, зарезервированный URL-адрес, куда вы загружаете файл шаблона.
Чтобы попасть туда, вам нужно:
Зарегистрируйте конечную точку 'init'с помощью add_rewrite_endpoint(). Давайте назовем это 'phpstyle'.
Подключитесь 'request'и убедитесь, что переменная конечной точки 'phpstyle'не пуста, если она установлена. Прочитайте превосходное (в основном) Полное руководство по переписыванию WordPress от Christopher Davis, чтобы понять, что здесь происходит.
Подключитесь 'template_redirect'и доставьте свой файл вместо файла шаблона по умолчанию index.php.
Для краткости я соединил все три простых шага в одной функции в следующем демонстрационном плагине.
Плагин PHP Style
<?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 должен загружаться два раза за каждое посещение. Не делайте этого без агрессивного кеширования.