Eu precisava de uma maneira de filtrar o conteúdo de uma página / postagens antes de ser carregado, para poder adicionar scripts ao cabeçalho se um código de acesso específico estivesse presente. Depois de muita pesquisa, me deparei com isso em http://wpengineer.com
function has_my_shortcode($posts) {
if ( empty($posts) )
return $posts;
$found = false;
foreach ($posts as $post) {
if ( stripos($post->post_content, '[my_shortcode') )
$found = true;
break;
}
if ($found){
$urljs = get_bloginfo( 'template_directory' ).IMP_JS;
wp_register_script('my_script', $urljs.'myscript.js' );
wp_print_scripts('my_script');
}
return $posts;
}
add_action('the_posts', 'has_my_shortcode');
que é absolutamente brilhante e fez exatamente o que eu precisava.
Agora eu preciso estender um pouco mais e fazer o mesmo com as barras laterais. Pode ser por um tipo de widget específico, código de acesso, trecho de código ou qualquer outra coisa que funcione para identificar quando o script precisa ser carregado.
O problema é que não consigo descobrir como acessar o conteúdo das barras laterais antes que a barra lateral seja carregada (o tema em questão terá várias barras laterais)
fonte
Respostas:
Você pode usar a função is_active_widget . Por exemplo:
Para carregar o script na página em que o widget é carregado apenas, você precisará adicionar o código is_active_widget () na sua classe de widget. Por exemplo, veja o widget de comentários recentes padrão (wp-includes / default-widgets.php, linha 602):
fonte
Só queria compartilhar uma solução em que trabalhei, o que me permitiu ser um pouco mais versátil com minha implementação. Em vez de fazer com que a função verifique uma variedade de códigos de acesso, modifiquei-o para procurar um único código de acesso que faça referência a uma função de script / estilo que precisa ser enfileirada. Isso funcionará para os dois métodos de outras classes (como plug-ins que podem não fazer isso eles mesmos) e para as funções dentro do escopo. Basta soltar o código abaixo em functions.php e adicionar a seguinte sintaxe a qualquer página / post em que você queira CSS e JS específicos.
Sintaxe de página / postagem: [loadCSSandJS function = "(class-> method / function name)"]
código functions.php:
Isso também permitirá que você adicione quantas você quiser em uma página. Lembre-se de que você precisa de um método / função para carregar.
fonte
Obrigado por compartilhar esta dica! Isso me deu um pouco de dor de cabeça, porque no começo não estava funcionando. Eu acho que existem alguns erros (talvez erros de digitação) no código acima
has_my_shortcode
e reescrevi a função da seguinte maneira:Eu acho que havia dois problemas principais: o que
break
não estava no escopo da instrução if e isso fazia com que o loop sempre quebrasse na primeira iteração. O outro problema era mais sutil e difícil de descobrir. O código acima não funciona se o código de acesso for a primeira coisa escrita em um post. Eu tive que usar o===
operador para resolver isso.De qualquer forma, muito obrigado por compartilhar essa técnica, ajudou muito.
fonte
com o Wordpress 4.7, há outra maneira de conseguir isso em seu
functions.php
arquivo,primeiro, você registra seu script , que na verdade não é impresso em sua página, a menos que você o enfileire se seu código de acesso for chamado,
o
do_shortcode_tag
foi introduzido em WP 4.7 e pode ser encontrado nos novos documentação desenvolvedores páginas.fonte