WordPressの機能は、WordPressがロードされている場合にのみ使用できます。をstyle.php
直接呼び出す場合は、WordPress機能を使用できません。
PHP駆動のスタイルシート用のWordPressをロードする簡単な方法の1つは、WordPressにエンドポイントを追加することです。テンプレートファイルをロードするカスタムの予約済みURLです。
そこに着くには:
上のエンドポイントを登録'init'
してadd_rewrite_endpoint()
。名前を付けましょう'phpstyle'
。
フックし'request'
て、エンドポイント変数'phpstyle'
が設定されている場合は空になっていないことを確認します。ここで何が起こっているのかを理解するために、クリストファー・デイビスの優れたA(ほとんど)WordPress Rewrite APIの完全なガイドを読んでください。
'template_redirect'
デフォルトのテンプレートファイルの代わりにファイルをフックして配信しますindex.php
。
短くするために、次のデモプラグインの1つの関数で3つの簡単な手順をすべて組み合わせました。
プラグイン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;
}
プラグインをインストールし、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
したがって、エンドポイントを使用して、の値に応じて1つのファイルで異なるスタイルシートを配信できますget_query_var( 'phpstyle' )
。
警告
これにより、サイトの速度が低下します。WordPressは、訪問ごとに2回ロードする必要があります。積極的なキャッシュなしでそれをしないでください。