Quando devo usar wp_register_script () com wp_enqueue_script () vs apenas wp_enqueue_script ()?


55

Estou tendo problemas para entender quando você precisa usar wp_register_script(). Atualmente, eu apenas uso algo como:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

Eu li muito (Codex, blogs, etc.), mas não consigo entender quando devo me registrar primeiro ou quando devo enfileirar. Como exemplo, notei que o TwentyTwelve não registra nenhum estilo ou script, apenas o enfileira.

Respostas:


50

A wp_register_script()página do Codex diz literalmente:

Uma maneira segura de registrar javascripts no WordPress para uso posterior wp_enqueue_script().

Isso significa que, se você deseja registrar seus scripts, mas não carregá-los diretamente em suas páginas, é possível registrar os arquivos uma vez e carregá-los quando necessário.

Por exemplo:

Você tem uma instrução switch que carrega alguma funcionalidade, mas dois dos três casos precisam de um arquivo javascript específico e um não. Você pode enfileirar o script todas as vezes, o que custa mais recursos ou apenas enfileirar o script quando necessário:

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

Não é necessário registrar um script e enfileirá-lo, mas pode fornecer alguma lógica no seu código se você registrar todos os scripts necessários em algum functions.phplugar do seu código, em vez de em qualquer lugar do seu código.

O Codex também informa o seguinte:

Use a wp_enqueue_scriptsação para chamar essa função ou admin_enqueue_scriptsno lado do administrador.

Isso significa que, se você deseja enfileirar seu script no front-end e no back-end, pode registrar um script uma vez e carregá-lo no front-end com wp_enqueue_scripte no back-end com admin_enqueue_script.
Dessa forma, você não terá o mesmo recurso de enfileiramento duas vezes em um tema, plug-in, widget ou qualquer outra coisa.


Obrigado. Isso esclareceu bastante. Então, você acha que o TwentyTwelve não se preocupa em se registrar primeiro, pois isso os carregará com certeza?
precisa saber é o seguinte

Essa certeza poderia ser uma possibilidade. Não sei como o tema dos Twelve Twelve é construído, pois nunca o uso, mas eles certamente terão suas razões para enqueuesubstituí- los register.
quer

2
Nesse sentido, discordo de "Você pode enfileirar o script todas as vezes, o que custa mais recursos, ou apenas enfileirar o script quando necessário". No seu código de exemplo, você pode remover a chamada de registro e, em vez disso, ter várias chamadas equivalentes completas (com $ src arg) wp_enqueue_style(). Isso seria apenas mais esforço de digitação, mas não resultaria em maiores requisitos de recursos. Corrigir?
Jan-Philip Gehrcke

7
Um ponto que foi deixado de fora por todas as explicações até agora é que você pode usar wp_register_script()apenas para registrar um script, para que ele possa ser usado como dependência de outros scripts e ser carregado apenas com eles, sem nunca ser enfileirado diretamente.
JHoffmann #

11
Mesmo que isso explique bem, eu recomendaria ler esta resposta também.
lowtechsun

8

IMHO, a principal vantagem de usar wp_register_scriptantes wp_enqueue_scriptsé ilustrada no seguinte parágrafo do Codex :

Os scripts que foram pré-registrados usando wp_register_script () não precisam ser enfileirados manualmente usando wp_enqueue_script () se estiverem listados como uma dependência de outro script enfileirado. O WordPress incluirá automaticamente o script registrado antes de incluir o script enfileirado que lista a manipulação do script registrado como uma dependência.

Se você acredita que não precisa disso (por exemplo, porque você tem 100% de certeza de que seu script não estará envolvido em nenhuma dependência), provavelmente poderá ir diretamente wp_enqueue_scripts, sem uma preliminar wp_register_script.


2

Passei por alguns artigos e cheguei à seguinte conclusão. Eu acho que ajuda.

  1. Registrar qualquer script usando wp_register_script()é apenas registrar; não carregá-lo. O script registrado não será carregado até que seja enfileirado usando wp_enqueue_script().
  2. Não precisamos registrar e enfileirar cada um dos scripts simultaneamente. Devemos apenas enfileirar. O registro não é obrigatório, pois a wp_enqueue_script()função registra automaticamente o script.
  3. Mas precisamos nos registrar enquanto estamos em uma das seguintes situações:

    uma. Suponha que precisamos de um script para carregar em mais de um local, como uma vez no front-end e outra no back-end (página de administração). Agora podemos registrar o script apenas uma vez. E depois enfileire-o no front-end e back-end individualmente. Olha, enfileirar significa carregar. Registrar não significa carregar. Caso não o registremos, ele será registrado automaticamente tantas vezes quanto o enfileirarmos. Por outro lado, se o registrarmos uma vez, ele será registrado uma vez, não importa quantas vezes o enfileiremos.

    b. Se queremos usar um script como uma dependência de outros scripts, não precisamos colocá-lo na fila wp_enqueue_script(). Basta registrá-lo com wp_register_script(). E será enfileirado automaticamente quando usarmos o nome do identificador como uma dependência de outros scripts enfileirados wp_enqueue_script().

    c. Se queremos que o script seja carregado quando necessário, em vez de ser carregado de uma só vez, podemos apenas registrá-lo para uso posterior. O caso de uso foi mostrado acima.

NB: Tanto quanto estou convencido, a mesma conclusão pode ser tirada para as folhas de estilo CSS. Quero dizer que podemos usar wp_register_style()e wp_enqueue_style()da mesma maneira.

Observe que a conclusão aqui tirada reflete minha própria dedução. Se eu estiver errado, por favor me corrija. E você pode ter chegado a uma conclusão diferente e muito melhor. Se for o caso, informe-nos. Quem sabe? Talvez o seu seja o melhor. Como diz o ditado, “Tantos princípios, tantas maneiras de salvação.” :)

https://ansrthemeaction.blogspot.com/2019/11/wpregisterscript-when-to-use.html


Sua explicação é a melhor que eu já li. Agora entendo por que é importante registrar scripts. Obrigado!
Jee

Muito obrigado @Jee
Mohammad Shohel Rana
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.