Funkcje WordPress są dostępne tylko po załadowaniu WordPress. Jeśli zadzwonisz style.php
bezpośrednio, nie możesz użyć funkcji WordPress.
Jednym prostym sposobem załadowania WordPressa do arkusza stylów opartego na PHP jest dodanie punktu końcowego do WordPress: niestandardowego, zarezerwowanego adresu URL, w którym ładujesz plik szablonu.
Aby się tam dostać, musisz:
Zarejestrować się na końcowy 'init'
z add_rewrite_endpoint()
. Nazwijmy to 'phpstyle'
.
Podłącz się 'request'
i upewnij się, że zmienna punktu końcowego 'phpstyle'
nie jest pusta, jeśli jest ustawiona. Przeczytaj doskonały A (głównie) kompletny przewodnik Christophera Davisa po WordPress Rewrite API, aby zrozumieć, co się tutaj dzieje.
Podłącz 'template_redirect'
i dostarcz plik zamiast domyślnego pliku szablonu index.php
.
Krótko mówiąc, połączyłem wszystkie trzy proste kroki w jednej funkcji w następującej wtyczce demonstracyjnej.
Wtyczka 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;
}
Zainstaluj wtyczkę, odwiedź wp-admin/options-permalink.php
raz, aby odświeżyć reguły przepisywania i dodaj style.php
do swojego motywu.
Próba 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' );
Teraz odwiedź yourdomain/phpstyle/
. Wydajność:
/* WordPress 3.3.2 */
default
Ale jeśli przejdziesz do yourdomain/phpstyle/blue/
wyjścia to:
/* WordPress 3.3.2 */
blue
Możesz więc użyć punktu końcowego do dostarczania różnych arkuszy stylów z jednym plikiem, w zależności od wartości get_query_var( 'phpstyle' )
.
Zastrzeżenie
Spowolni to działanie Twojej witryny. WordPress musi być ładowany dwa razy dla każdej wizyty. Nie rób tego bez agresywnego buforowania.