Есть ли фильтр или действие для удаления из очереди jQuery на файлах сайта Yoast?
Я добавил больше деталей из этого вопроса.
Yoast SEO page-sitemap.xml является недействительным XML. Ошибка показа Extra content at the end of the document
Я обнаружил, что Yoast SEO page-sitemap.xml
недопустимо из-за тегов сценария jquery, вставляемых до <?xml>
декларация.
Как это:
<script type='text/javascript' src='https://dev-intechrahealth.pantheonsite.io/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
<script type='text/javascript' src='https://dev-intechrahealth.pantheonsite.io/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script>
<?xml version="1.0" encoding...
Я не хочу, чтобы они были добавлены в файлы карты сайта. Я просто хочу, чтобы мой файл карты сайта начинался так:
<?xml version="1.0" encoding...
То, что я нашел работы, это добавить немного кода обнаружения URL в /wp-includes/script-loader.php
который проверяет, является ли текущий URL-адрес картой сайта, а затем условно загружает сценарии jquery с $scripts->add
, Как это:
// jQuery
$url = $_SERVER["REQUEST_URI"];
$isItSitemap = strpos($url, 'sitemap');
if ($isItSitemap==false) {
$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4' );
$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.12.4' );
$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.4.1' );
}
Но это редактирование ядра, и я не хочу этого делать. Я хочу, чтобы это произошло в моей теме (Диви) functions.php
чтобы сохранить при обновлении ядра.
Так что я сделал это в functions.php
:
/* Register jQuery but first detect if the Yoast SEO sitemap is rendering and dequeue script if so. This prevents an XML format error which is caused when <script> tags appear before the <?xml> declaration */
add_action( 'wp_enqueue_scripts', 'dequeue_jquery_for_sitemap', 10 );
function dequeue_jquery_for_sitemap() {
$url = $_SERVER["REQUEST_URI"];
$isItSitemap = strpos($url, 'sitemap');
if (!$isItSitemap==false) {
wp_dequeue_script( 'jquery' );
wp_dequeue_script( 'jquery-core' );
wp_dequeue_script( 'jquery-migrate' );
}
}
Я даже пытался wp_deregister_script
также:
wp_dequeue_script( 'jquery' );
wp_deregister_script( 'jquery' );
wp_dequeue_script( 'jquery-core' );
wp_deregister_script( 'jquery-core' );
wp_dequeue_script( 'jquery-migrate' );
wp_deregister_script( 'jquery-migrate' );
Однако это не решает проблему. Они все еще появляются в page-sitemap.xml
,
Какой еще способ достичь этого? Или чего мне не хватает?