Eu tenho meu style.php
arquivo assim.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
Isso não funciona, mas quando faço isso, funciona.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
Qual seria o problema?
Este é o 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');
Na verdade, isso está na seção de administração.
style.php
. Se o arquivo de estilo não for chamado pelo WordPress, nenhuma função do WordPress estará disponível.Respostas:
As funções do WordPress estão disponíveis apenas se o WordPress estiver carregado. Se você ligar
style.php
diretamente, não poderá usar a função WordPress.Uma maneira simples de carregar o WordPress para sua folha de estilo baseada em PHP é adicionar um ponto de extremidade ao WordPress: um URL reservado e personalizado onde você carrega seu arquivo de modelo.
Para chegar lá, você precisa:
Registre um terminal
'init'
comadd_rewrite_endpoint()
. Vamos nomear'phpstyle'
.Conecte-se
'request'
e verifique se a variável do terminal'phpstyle'
não está vazia se estiver configurada. Leia o excelente Guia completo A (principalmente) de Christopher Davis para a API de reescrita do WordPress para entender o que está acontecendo aqui.Conecte
'template_redirect'
e entregue seu arquivo em vez do arquivo de modelo padrãoindex.php
.Para manter as coisas curtas, combinei as três etapas simples em uma função no seguinte plugin de demonstração.
Estilo PHP de plug-in
Instale o plug-in, visite
wp-admin/options-permalink.php
uma vez para atualizar as regras de reescrita e adicione umstyle.php
ao seu tema.Amostra
style.php
Agora visite
yourdomain/phpstyle/
. Saída:Mas se você for para
yourdomain/phpstyle/blue/
a saída é:Assim, você pode usar o terminal para fornecer diferentes folhas de estilo com um arquivo, dependendo do valor de
get_query_var( 'phpstyle' )
.Embargo
Isso desacelerará seu site. O WordPress deve ser carregado duas vezes para cada visita. Não faça isso sem cache agressivo.
fonte
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
para acelerar as coisas ... e se, em seguida, todas as funções necessárias estão disponíveis ...Você pode fazer isso carregando a saída via
admin-ajax.php
, mas uma abordagem melhor para isso é usar aSHORTINIT
constante do WordPress para carregar apenas as funções necessárias, mas você precisará encontrar e carregarwp-load.php
para fazer isso:Nesse ponto, você precisará incluir quaisquer outros
wp-includes
arquivos necessários para obter suas opções de tema - que variam dependendo de como você está salvando e, portanto, acessando-os. (Você provavelmente precisará adicionar mais a esta lista para não obter erros fatais - mas, à medida que for avançando, os erros fatais informarão quais arquivos você precisa adicionar.) Por exemplo.Então, quando você tiver todas as funções necessárias, poderá gerar o CSS usando essas funções ... por exemplo.
Em seguida, você pode enfileirar o arquivo normalmente, por exemplo:
fonte
../../
nowp-load.php
caminho, a função dada vai encontrá-lo para você como é ... mas como eu disse que você precisa encontrar e incluir quaisquer arquivos que você precisa que têm as funções que você está usando, por exemplo.get_background_image
está emtheme.php
etc ... À medida que você adiciona ao CSS, você pode precisar de mais, então precisará aprender como encontrá-los para usar esse método de maneira eficaz e confiável.