J'ai mon style.php
dossier qui ressemble à ceci.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
Cela ne fonctionne pas, mais quand je le fais, cela fonctionne.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
Quel serait le problème?
Ceci est le fichier mainfile.php
<?php
function test(){
global get_option('bgcolor');?>
<input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
<?php
}
add_action('admin_head','test');
C'est en fait dans la section admin.
style.php
. Si le fichier de style n'est pas appelé par WordPress, aucune fonction WordPress n'est disponible.Réponses:
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'
avecadd_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éfautindex.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
Installez le plugin, visitez
wp-admin/options-permalink.php
une fois pour actualiser les règles de réécriture et ajoutez-en unstyle.php
à votre thème.Échantillon
style.php
Maintenant, visitez
yourdomain/phpstyle/
. Production:Mais si vous allez à
yourdomain/phpstyle/blue/
la sortie, c'est: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.
la source
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
pour accélérer les choses ... et si alors toutes les fonctions nécessaires sont disponibles ...Vous pouvez le faire en chargeant la sortie via
admin-ajax.php
, mais une meilleure approche consiste à utiliser WordPressSHORTINIT
constant pour pouvoir charger exactement les fonctions dont vous avez besoin, mais vous devrez trouver et chargerwp-load.php
pour ce faire:À ce stade , vous devez être inclure que tout autre
wp-includes
fichiers dont vous avez besoin pour obtenir vos options thématiques - qui varie en fonction de votre façon dont vous enregistrez et donc l' accès à ceux -ci . (Vous devrez probablement ajouter plus à cette liste afin de ne pas obtenir d'erreurs fatales - mais au fur et à mesure, les erreurs fatales vous diront quels fichiers vous devez ajouter.) Par exemple.Ensuite, une fois que vous avez toutes les fonctions dont vous avez besoin, vous pouvez sortir le CSS en utilisant ces fonctions ... par exemple.
Ensuite, vous pouvez mettre le fichier en file d'attente comme d'habitude, par exemple:
la source
../../
sur lewp-load.php
chemin, la fonction donnée le trouvera tel quel ... mais comme je l'ai dit, vous devez trouver et inclure tous les fichiers dont vous avez besoin qui ont les fonctions que vous utilisez, par exemple.get_background_image
est danstheme.php
etc ... au fur et à mesure que vous ajoutez au CSS, vous aurez peut-être besoin de plus, vous devrez donc apprendre à les trouver pour utiliser cette méthode de manière efficace et fiable.