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

47

Estou tendo problemas para entender quando você precisa usar wp_register_script() . Atualmente, uso apenas 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 fiz muita leitura (Codex, blogs, etc.), mas não consigo entender quando devo me registrar primeiro, ou quando devo apenas enfileirar. Como exemplo, notei que TwentyTwelve não registra nenhum estilo ou script, apenas os enfileira.

    
por akTed 21.01.2013 / 15:36
fonte

2 respostas

43

A página wp_register_script() Codex diz literalmente:

  

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

Isso significa que, se você quiser registrar seus scripts, mas não carregá-los diretamente em suas páginas, poderá registrar os arquivos uma vez e, em seguida, carregá-los quando precisar deles.

Por exemplo:

Você tem uma instrução switch que carrega algumas funcionalidades, 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 enfileira o script quando você precisar dele:

...
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, em seguida, enfileirá-lo, mas ele pode fornecer alguma lógica em seu código se você registrar todos os scripts necessários em seu functions.php em vez de em qualquer lugar em seu código.

O Codex também diz o seguinte:

  

Use a ação wp_enqueue_scripts para chamar essa função ou admin_enqueue_scripts para chamá-la no lado do administrador.

Isso significa que, se você quiser enfileirar seu script na extremidade e no back-end, poderá registrar um script uma vez e, em seguida, carregá-lo no front-end com wp_enqueue_script e 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.

    
por Mike Madern 21.01.2013 / 15:47
fonte
6

IMHO A principal vantagem de usar wp_register_script antes de wp_enqueue_scripts é ilustrada no seguinte parágrafo de Códice :

  

Scripts que foram pré-registrados usando wp_register_script ()   não precisa ser enfileirado manualmente usando wp_enqueue_script () se eles estiverem   listado como uma dependência de outro script que é enfileirado. WordPress   incluirá automaticamente o script registrado antes de incluir   o script de enfileiramento que lista o identificador do script registrado como   dependência.

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

por Franco 01.06.2017 / 21:43
fonte