wp_add_inline_script fără dependințe
Am un fragment de JavaScript pe care vreau să-l injectez în footer-ul paginii. Este un cod de tracking, să zicem similar cu Google Analytics. Nu are dependințe, este un fragment independent.
Pot face ceva de genul acesta
function render_tracking_code(){
wp_enqueue_script( 'depends-js', 'https://rdiv.com/dummy.js', array(), '0.01', true );
wp_add_inline_script( 'depends-js', 'oGramadaDeCodJavaScript' );
}
add_action( 'wp_enqueue_scripts', 'render_tracking_code' );
Pare puțin prostesc (dummy.js este un fișier gol), dar funcționează. Există vreo modalitate de a evita dependința?
wp_add_inline_style() - fără dependență
Funcția wp_add_inline_style() poate fi utilizată fără o dependență de fișier sursă.
Iată un exemplu de la @Flix:
wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );
wp_add_inline_style( 'dummy-handle', '* { color: red; }' );
unde am putea înregistra acest cod prin acțiunea wp_enqueue_scripts.
wp_add_inline_script() - fără dependență
Conform ticket-ului #43565, o funcționalitate similară va fi suportată pentru wp_add_inline_script() în versiunea 4.9.95.0 (mulțumită lui @MarcioDuarte, @dev101 și @DaveRomsey pentru verificările din comentarii):
wp_register_script( 'dummy-handle-header', '' );
wp_enqueue_script( 'dummy-handle-header' );
wp_add_inline_script( 'dummy-handle-header', 'console.log( "header" );' );
care va afișa următorul cod în header, adică între tag-urile <head>...</head>:
<script type='text/javascript'>
console.log( "header" );
</script>
Pentru a-l afișa în footer:
wp_register_script( 'dummy-handle-footer', '', [], '', true );
wp_enqueue_script( 'dummy-handle-footer' );
wp_add_inline_script( 'dummy-handle-footer', 'console.log( "footer" );' );
Valoarea implicită a argumentului $position în wp_add_inline_script() este 'after'. Valoarea 'before' o va afișa deasupra poziției 'after'.
Funcția wp_add_inline_script() fără dependență este încă luată în considerare pentru versiunea 4.9.9, dar nu înseamnă neapărat că va fi adăugată. Prin urmare, este indicat să așteptați confirmarea înainte de a utiliza această funcționalitate.
Marcio Duarte
Funcționează începând cu WP 5.0.
Dave Romsey
Cineva mi-a șters comentariul de aici (am confirmat răspunsul lui birgire că funcționează într-adevăr în WP 5.0+), iar o lună mai târziu am avut nevoie din nou de acest cod, am căutat pe Google, am găsit acest răspuns, am dat o privire rapidă, nu am găsit comentariul meu și am trecut la alte rezultate. După o oră, m-am întors aici, realizând că acesta era răspunsul pe care îl căutam! Către moderator: vă rog să NU ștergeți comentariile mele utile, ele îmi servesc și mie ca referințe și mementouri viitoare, nu doar altora. Mulțumesc.
dev101
Actualizare: WordPress a adăugat suport pentru adăugarea de scripturi și stiluri inline fără o dependență în versiunea 5.0. Consultați răspunsul lui @birgire pentru implementări.
Când utilizați wp_add_inline_script(), WP_Scripts::print_inline_script() va fi folosit în final pentru a afișa scripturile inline. Prin design, print_inline_script() necesită o dependență validă, $handle.
Deoarece în acest caz nu există o dependență, wp_add_inline_script() nu este instrumentul potrivit pentru această sarcină. În loc să creați un fișier de dependență fals (și o cerere HTTP suplimentară nedorită), folosiți wp_head sau wp_footer pentru a afișa scriptul inline:
add_action( 'wp_head', 'wpse_add_inline_script' );
function wpse_add_inline_script() {
echo '<script>' . PHP_EOL;
// aWholeBunchOfJavascriptCode
echo '</script>' . PHP_EOL;
}
În general, JavaScript-ul ar trebui adăugat într-un fișier .js și încărcat folosind wp_enqueue_script() pe hook-ul wp_enqueue_scripts. Datele pot fi puse la dispoziția scriptului folosind wp_localize_script(). Uneori poate fi totuși necesar să adăugați un script inline.
O metodă de a face acest lucru este să creezi o funcție care afișează scriptul tău în interiorul unui tag <script> și să o conectezi la acțiunea wp_print_footer_scripts. Ar trebui să ai grijă să escopezi orice element pe care nu-l controlezi în mod strict, dar în rest, aceasta este o metodă sigură și ușoară.
De exemplu:
add_action( 'wp_print_footer_scripts', function () {
?>
<script>
(function myFunction() {
/* codul tău aici */
})();
</script>
<?php
} );