Les fonctions WordPress ne sont disponibles que si WordPress est chargé. Si vous appelez style.php
directement votre, vous ne pouvez pas utiliser une fonction WordPress.
Une façon simple de charger WordPress pour votre feuille de style PHP est d'ajouter un point de terminaison à WordPress: une URL réservée personnalisée où vous chargez votre fichier de modèle.
Pour y arriver, vous devez:
Enregistrez un point de terminaison 'init'
avec add_rewrite_endpoint()
. Appelons-le 'phpstyle'
.
Connectez-vous 'request'
et assurez-vous que la variable de point de terminaison 'phpstyle'
n'est pas vide si elle est définie. Lisez l'excellent guide complet de Christopher Davis sur l'API WordPress Rewrite pour comprendre ce qui se passe ici.
Accrochez 'template_redirect'
et livrez votre fichier au lieu du fichier de modèle par défaut index.php
.
Pour faire court, j'ai combiné les trois étapes simples dans une seule fonction dans le plugin de démonstration suivant.
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;
}
Installez le plugin, visitez wp-admin/options-permalink.php
une fois pour actualiser les règles de réécriture et ajoutez-en un style.php
à votre thème.
Échantillon 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' );
Maintenant, visitez yourdomain/phpstyle/
. Production:
/* WordPress 3.3.2 */
default
Mais si vous allez à yourdomain/phpstyle/blue/
la sortie, c'est:
/* WordPress 3.3.2 */
blue
Vous pouvez donc utiliser le point de terminaison pour fournir différentes feuilles de style avec un fichier en fonction de la valeur de get_query_var( 'phpstyle' )
.
Caveat
Cela ralentira votre site. WordPress doit être chargé deux fois pour chaque visite. Ne le faites pas sans mise en cache agressive.