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