Le funzioni di WordPress sono disponibili solo se WordPress è caricato. Se chiami style.php
direttamente non puoi usare una funzione WordPress.
Un modo semplice per caricare WordPress per il tuo foglio di stile basato su PHP è aggiungere un endpoint a WordPress: un URL riservato e riservato in cui caricare il file modello.
Per arrivarci devi:
Registrare un endpoint 'init'
con add_rewrite_endpoint()
. Diamo un nome 'phpstyle'
.
Agganciare 'request'
e assicurarsi che la variabile dell'endpoint 'phpstyle'
non sia vuota se è impostata. Leggi l'eccellente A (per lo più) completa guida di Christopher Davis all'API di riscrittura di WordPress per capire cosa sta succedendo qui.
Aggancia 'template_redirect'
e consegna il tuo file invece del file modello predefinito index.php
.
Per farla breve, ho combinato tutti e tre i semplici passaggi in un'unica funzione nel seguente plugin demo.
Plugin 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;
}
Installa il plug-in, visita wp-admin/options-permalink.php
una volta per aggiornare le regole di riscrittura e aggiungi astyle.php
al tuo tema.
Campione 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' );
Adesso visita yourdomain/phpstyle/
. Produzione:
/* WordPress 3.3.2 */
default
Ma se vai yourdomain/phpstyle/blue/
all'output è:
/* WordPress 3.3.2 */
blue
Quindi è possibile utilizzare l'endpoint per fornire fogli di stile diversi con un file a seconda del valore di get_query_var( 'phpstyle' )
.
Avvertimento
Questo rallenterà il tuo sito. WordPress deve essere caricato due volte per ogni visita. Non farlo senza una cache aggressiva.