Qual é a maneira correta de usar wp_enqueue_script / style?

Primeiro, deixe-me dizer-lhe como estou fazendo isso. Eu tenho essa function. O objective é levar a seqüência de um caminho do sistema de arquivos (/ root / web / dir / some / path / to / file) e retornar o URL equivalente (http://mydomain.com/some/path/to/file ). Para que esta function funcione corretamente, precisa saber onde o diretório web raiz (RWD) está no sistema. Isso faz isso assumindo $ _SERVER [‘DOCUMENT_ROOT’] como o RWD.

function path_to_url($path) { $path = str_replace('\\', '/', $path); $doc_root = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']); return 'http://'.$_SERVER['HTTP_HOST'].'/'.str_replace(' ', '%20', str_replace($doc_root, '', $path)); } 

Aprenda esta function e saiba o que faz para entender o que estou falando nesta publicação.

Com esta function, tudo o que eu precisaria saber para include um script / folha de estilo na minha página é o caminho. Eu estaria escrevendo um código que parece algo como:

 wp_enqueue_script('myscript', path_to_url(dirname(__FILE__).'/script.js')); 

Isso funcionou bem, de fato, funcionou tão bem que comecei a usar path_to_url em muitos lugares do meu tema.

Há uma razão pela qual essa solução não funciona em algumas circunstâncias. Alguns sites de hospedagem compartilhados (bluehost) não têm $ _SERVER [‘DOCUMENT_ROOT’] configurado para o RWD como eu esperava e assumi que fosse. Bluehost parece ter sempre configurado para “/ usr / local / apache / htdocs”, que não se correlaciona com os caminhos que uso no PHP – “/ home1 / demo / public_html / wp-content / themes / …”. Então, devo dar um trabalho aos mais infelizes para ter $ _SERVER [‘DOCUMENT_ROOT’] configurado para algo como incorreto (pelo menos, ao meu conhecimento, parece ser incorreto) como o acima, ou eu deveria descobrir outro meio de fazer o que eu quero / preciso fazer.

A solução seria de alguma forma corrigir $ _SERVER [‘DOCUMENT_ROOT’]. Mas isso não parece uma solução válida para os meus clientes. Eles teriam que enviar um ticket de suporte informando-me de que meu tema não está funcionando. Então eu precisaria responder com uma mensagem sobre como eles podem resolver o problema. Mas antes que eu pudesse simplesmente responder a eles com uma solução, eu precisaria conhecer seu RWD de alguma forma. Esta seria uma solução muito pesada e exigiria mais tempo e esforço, então parece prático.

Então me deixo com a segunda solução – descubra outro meio de fazer o que eu preciso fazer. Ao escrever isso, pensei que poderia ir com a abordagem codificada, e talvez essa seja a única maneira de resolver esse problema.

 wp_enqueue_script('script', get_bloginfo('template_url').'/lib/framework/panel/script.js'); 

Depois de toda a minha explicação, isso parece ser um acéfalo. Mas a única disputa que tenho com isso é como é rígida. Por exemplo, se eu decidir mover meu arquivo script.js ao redor, eu precisarei editar esse código, não importa o que. O que eu gosto da solução path_to_url acima é que se eu movesse o script.js e o arquivo de modelo php, nada quebra; desde que o arquivo script.js permaneça na mesma pasta que o arquivo de modelo php. Na verdade, o que eu estava fazendo com a solução path_to_url está tornando as coisas relativas novamente, em relação ao arquivo de modelo php!

Infelizmente, eu percebo que não é prático esperar que haja uma fórmula para converter todos os caminhos do sistema de arquivos em todos os sistemas para URLs. Isso é devido ao fato de que existem diferentes configurações de servidor que tornam impossível uma fórmula para conhecer o RWD em um caminho. Por exemplo, um servidor pode ter uma configuração onde wordpress está instalado em http://example.com/~demo/ e o RWD seria / home1 / demo / public_html /. Assim, não há nenhuma maneira de conseguir o RWD nosso de __FILE__ com esse tipo de configuração. Como eu poderia?

Espero que você tenha achado esta postagem / pergunta interessante. Vou deixá-lo com esta pergunta: como posso fazer o wp_enqueue_script('script', get_bloginfo('template_url') . '/lib/framework/panel/script.js'); mais relativo e menos rígido?

Obrigado rapazes. Paz!

Solutions Collecting From Web of "Qual é a maneira correta de usar wp_enqueue_script / style?"

Faça isso na cabeça de suas funções.php:

define('PATH_TO_URL', get_bloginfo('template_url') . [path to your libraries, etc.]);

Então, basta chamar wp_enqueue_script('script', PATH_TO_URL . 'myscript.js'); ou similar em qualquer lugar que você quiser. Se você alterar a localização, basta alterar a definição () e ela será atualizada em todos os lugares.

Mole-mole.