Bei vielen WordPress-Themes liefert der W3C Validator Warnmeldungen. Und zwar betreffend zweier Dinge im Kopfteil:
Zum einen gibt es diesen Error:
Error: Bad value https://api.w.org/ for attribute rel on element link: The string https://api.w.org/ is not a registered keyword. From line 30, column 1; to line 30, column 88 </script>↩<link rel='https://api.w.org/' href='https://DOMAIN/wp-json/' />↩<meta
Hier geht es darum, daß im Attribut rel ein nicht vorgesehener Inhalt angegeben ist.
Zum anderen geht es um Warnungen wie diese:
Warning: The type attribute is unnecessary for JavaScript resources. From line 22, column 1; to line 22, column 119 ='all' />↩<script type='text/javascript' src='https://DOMAIN/wp-includes/js/jquery/jquery.js?ver=1.12.4'></scri
Hier wird zu recht bemeckert, dass das Attribut type=“text/javascript“ unnötig ist.
Folgendes hab ich daher in das relevante Theme eingebaut:
function my_remove_unwanted_head_actions() { remove_action( 'wp_head', 'post_comments_feed_link ', 2 ); // Display the links to the general feeds: Post and Comment Feed remove_action( 'wp_head', 'rsd_link' ); // Display the link to the Really Simple Discovery service endpoint, EditURI link remove_action( 'wp_head', 'wlwmanifest_link' ); // Display the link to the Windows Live Writer manifest file. remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); // remove prev link remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); // remove Display relational links for the posts adjacent to the current post. remove_action( 'wp_head', 'rest_output_link_wp_head' ); // remove Link header for the REST API. remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // remove oEmbed discovery links in the website remove_action( 'template_redirect', 'rest_output_link_header', 11 ); // remove the REST API link tag into page header. } add_action('wp_head', 'my_remove_unwanted_head_actions', 0);
Es tut dabei noch mehr als nur den oben gemeldeten Fehler zu beheben. Hier werden alle Angaben aus dem <head> entfernt, die meiner Meinung nach inzwischen obsolet oder unnötig sind.
Für die Warnung über den unnötigen type hab ich den folgenden Filter ergänzt:
function my_remove_type_attr($tag, $handle) { return preg_replace( "/type=['\"]text\/(javascript|css)['\"]/", '', $tag ); } add_filter('style_loader_tag', 'my_remove_type_attr', 10, 2); add_filter('script_loader_tag', 'my_remove_type_attr', 10, 2);
Das ist zwar nicht ganz perfekt und wird nicht all die Fälle abfangen, w0 Script- und CSS-Includes aus Plugins kommen, aber es hilft zumindest dazu, die Ausgaben des Themes sauber zu machen.