Curățarea tag-urilor script
Vreau să curăț tag-urile <script>
generate de WordPress pentru a obține un output mai semantic pentru HTML5.
Acest lucru poate fi făcut deja pentru tag-urile <style>
folosind acest cod atașat la filtrul style_loader_tag
:
//curăță tag-urile default de stil WordPress
add_filter('style_loader_tag', 'clean_style_tag');
function clean_style_tag($input) {
preg_match_all("!<link rel='stylesheet'\s?(id='[^']+')?\s+href='(.*)' type='text/css' media='(.*)' />!", $input, $matches);
//afișează media doar dacă este print
$media = $matches[3][0] === 'print' ? ' media="print"' : '';
return '<link rel="stylesheet" href="' . $matches[2][0] . '"' . $media . '>' . "\n";
}
Dar nu există încă un echivalent script_loader_tag
în nucleu. Această funcționalitate a fost propusă în trecut, dar deocamdată avem nevoie de o soluție alternativă.
Am început să investighez în /wp-includes/class.wp-scripts.php
la function do_item( $handle, $group = false )
în jurul liniei 79 care conține output-ul pentru script (mai exact liniile 117-120
), dar am dificultăți în a găsi un filtru potrivit care ar putea fi utilizat aici.

Dacă chiar vrei să faci asta, atunci ar trebui să fie deja posibil.
global $wp_scripts
este o instanță a clasei WP_Scripts
, care la rândul ei este o instanță a clasei WP_Dependencies
.
Deci, teoretic (netestat), ar trebui să poți face ceva de genul:
function alter_script_tags()
{
echo '<pre>';
print $GLOBALS['wp_scripts']->print_html;
echo '</pre>';
}
add_action( 'wp_enqueue_scripts', 'alter_script_tags', 999999 );
Acesta este doar un schiță aproximativă, dar ar trebui să înțelegi ideea.

Se pare că aceasta a fost încercată acum ceva timp https://github.com/retlehs/roots/blob/6492fe93187c79a9a8b0bce9fb006fb2f3aa75cc/inc/roots-scripts.php și îmi amintesc că am testat această soluție și am întâmpinat câteva probleme - voi continua să cercetez acest subiect. Mulțumesc.

@Zach Ehm, unde vezi print_html
acolo? Codul la care ai dat link nu are nicio legătură cu ceea ce am scris mai sus. Ceea ce sugerez este să interceptați variabila $print_html
care conține output-ul, deoarece aceasta este singura posibilitate de a modifica ceva cu adevărat, în loc să o înlocuiți (și astfel să rămâneți compatibil cu pluginuri și teme). Apropo: Dacă apreciați, aș aprecia să primiți un vot pozitiv.

Nu sunteți sigur de compatibilitatea cu versiunea WP, dar este preluat din modulul Soil plugin clean-up.php
pentru Roots. Folosiți în functions.php
al temei sau similar.
function clean_script_tag($input) {
$input = str_replace("type='text/javascript' ", '', $input);
return str_replace("'", '"', $input);
}
add_filter('script_loader_tag', 'clean_script_tag');
