Функции 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 должен загружаться два раза за каждое посещение. Не делайте этого без агрессивного кеширования.