Se um plug-in usa algum script (exemplo em destaque: jQuery UI Datepicker), mas você não está satisfeito com a forma como o script renderiza a saída, existem duas possibilidades:
1. Cancele o registro do script> Adicione sua própria versão
Então, primeiro você precisa verificar o punho, em seguida, encontrar a prioridade e o gancho ( wp_enqueue_scripts
, login_enqueue_scripts
, etc.) ... você sabe o que fazer.
2. Altere os parâmetros do plugin jQuery
Normalmente - se o plugin não é uma porcaria - ele percorre os parâmetros de PHP para JS usando
wp_localize_script( $handle, $object_name, array(
// data
) );
Agora, essa é uma maneira inteligente de adicionar seus dados a um script JS, mas ... não é filtrável por padrão. Nem oferece WP_Scripts
nem nenhum filtro que os usuários possam utilizar posteriormenteWP_Dependencies
Pergunta: Como podemos filtrar os argumentos / parâmetros que são movidos do PHP para o Javascript usando
wp_localize_script
?
wp_localize_script()
: uma matriz única ou multidimensional .@toscho ótima implementação. Testado e verdadeiro. Aqui está uma versão ligeiramente modificada, que também passa o $ handle e $ object_name para que você possa filtrar apenas quando necessário.
fonte
A resposta aceita é ótima! Mas encontrei um problema em que os campos personalizados avançados pararam de funcionar no back-end devido a um erro de javascript. Depois de cavar por algumas horas, cheguei à conclusão de que o objeto Filterable_Scripts estava com falta dos arquivos javascript registrados pelo plug-in ACF. Não sei exatamente por que isso aconteceu, mas encontrei uma solução adequada para isso, se você encontrar o mesmo problema.
O
$GLOBALS['wp_scripts']
felizmente ainda continha os scripts apropriados. Então eu fiz o seguinte noadd_action
:Como o objeto contém uma matriz de todos os scripts registrados e as alças também são as chaves da matriz, eu poderia usar array_diff_key para determinar quais scripts estavam ausentes no objeto estendido e adicioná-los novamente. Eu fiz isso e não apenas
$fscripts->registered = $GLOBALS['wp_scripts']->registered;
porque não queria sobrescrever nenhuma alteração feita pelo objeto estendido.
fonte
$acf_field_group = $GLOBALS['wp_scripts']->registered['acf-field-group'];
(tambémacf-input
) e adicioná-las novamente à instância daWP_Scripts
tag estendida :;$GLOBALS['wp_scripts']->registered['acf-field-group'] = $acf_field_group
então, percebi que o ACF está usando apenas os scripts em Admin e eu estou somentel10n
na frente, então envolva a ação e filtre em um!is_admin
teste.