wp_add_inline_script sin dependencia

4

Tengo un fragmento de código javascript que quiero inyectar en el pie de página de la página. Es un código de seguimiento, digamos similar a Google Analytics. No tiene dependencias, es un fragmento de código independiente.

Puedo hacer algo como esto

function render_tracking_code(){
    wp_enqueue_script( 'depends-js', 'https://rdiv.com/dummy.js', array(), '0.01', true );
    wp_add_inline_script( 'depends-js', 'aWholeBunchOfJavascriptCode' );
}
add_action( 'wp_enqueue_scripts', 'render_tracking_code' );

Parece un poco estúpido (dummy.js es un archivo en blanco), pero funciona. ¿Hay alguna manera de omitir la dependencia?

    
pregunta jimlongo 23.03.2018 - 22:45

3 respuestas

4

Cuando se use wp_add_inline_script() , WP_Scripts::print_inline_script() se usará finalmente para generar scripts en línea. Por diseño, print_inline_script() requiere una dependencia válida, $handle .

Dado que no hay dependencia en este caso, wp_add_inline_script() no es la herramienta adecuada para el trabajo. En lugar de crear un archivo de dependencia falso (y una solicitud HTTP adicional no deseable), use wp_head o wp_footer para generar el script en línea:

add_action( 'wp_head', 'wpse_add_inline_script' );
function wpse_add_inline_script() {
  echo '<script>' . PHP_EOL;

  // aWholeBunchOfJavascriptCode

  echo '</script>' . PHP_EOL;
}

En general, se debe agregar JavaScript a un archivo .js y encolar usando wp_enqueue_script() en el gancho wp_enqueue_scripts . Los datos pueden ponerse a disposición del script utilizando wp_localize_script() . Aunque a veces puede ser necesario agregar un script en línea.

    
respondido por el Dave Romsey 23.03.2018 - 23:37
1

wp_add_inline_style() - sin dependencia

El wp_add_inline_style() se puede usar sin una dependencia del archivo fuente.

Aquí hay un ejemplo de @Flix:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );
wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

donde podríamos enganchar esto en la acción wp_enqueue_scripts .

wp_add_inline_script() - sin dependencia

De acuerdo con el ticket # 43565 , se admitirá una similar para wp_add_inline_script() en la versión 4.9.9 :

wp_register_script( 'dummy-handle-header', '' );
wp_enqueue_script( 'dummy-handle-header' );
wp_add_inline_script( 'dummy-handle-header', 'console.log( "header" );' );

que mostrará lo siguiente en el encabezado , es decir, entre las etiquetas <head>...</head> :

<script type='text/javascript'>
console.log( "header" );
</script>

Para mostrarlo en el pie de página :

wp_register_script( 'dummy-handle-footer', '', [], '', true );
wp_enqueue_script( 'dummy-handle-footer'  );
wp_add_inline_script( 'dummy-handle-footer', 'console.log( "footer" );' );

El valor predeterminado del argumento de entrada $position en wp_add_inline_script() es 'after' . El valor 'before' lo imprime por encima de 'after' .

    
respondido por el birgire 13.08.2018 - 11:41
0

Una forma de hacer esto es crear una función que haga eco de su secuencia de comandos dentro de una etiqueta <script> , y engancharla a wp_print_footer_scripts acción. Debería tener cuidado de evitar cualquier cosa que no controle estrictamente, pero este es un método generalmente seguro y fácil de lo contrario.

Por ejemplo:

add_action( 'wp_print_footer_scripts', function () { 
    ?>
    <script>
        (function myFunction() { 
            /* your code here */
        })();
    </script>
<?php 
} );
    
respondido por el Morgan Estes 13.04.2018 - 06:03

Lea otras preguntas en las etiquetas