Google 페이지 인사이트 제안을 따르려고하면 "JS render block"권장 사항이 있으며 jQuery
주 파일과 관련이 있습니다.WordPress : deffered jQuery를 실행 한 후 인라인 JS를 실행합니다.
내 사이트는 일부 플러그인과 함께 WordPress를 사용합니다. 플러그인 중 하나가 JS 인라인을 버립니다. 따라서 jQuery
을 바닥 글에로드하거나 "지연"모드를 사용하여로드하면 인라인 코드가 실행되면 jQuery is not defined
이됩니다.
필자는 jQuery
주 파일이 문서 끝 부분에서 실행 된 후 모든 인라인 스크립트를 '잡아'지연시키는 글로벌 솔루션을 찾으려고했습니다.
나는 저에게 큰 도움이되는 해결책을 썼습니다. 그것은 내 구체적인 상황에 대한 매우 직선적 인 솔루션이지만, 나는 이것을 the_content
또는 위젯 출력에 대한 필터로 만들지 못했습니다. 이 솔루션을 글로벌 솔루션으로 만들고 싶습니다. 따라서 JS가 어딘가에서 실행되는 것에 대해 걱정할 필요가 없습니다.
아이디어를 얻는 방법에 대한 아이디어가 있으십니까? 여기에 단축 코드를 통해 실행이 특정 사건에 대한 지금까지 내 코드 :
/* Get shortcode HTML */
$widget_shortcode = do_shortcode($shortcode);
/* Take out all scripts into an array */
$delayed_scripts = array();
preg_match_all('#<script(.*?)</script>#is', $widget_shortcode, $match);
foreach ($match as $val){
$delayed_script = '<script '.$val[0].'</script>';
array_push($delayed_scripts, $delayed_script);
}
/* Remove all scripts from HTML */
$widget_shortcode = preg_replace('#<script(.*?)</script>#is', '', $widget_shortcode);
/* Echo filtered HTML */
echo $widget_shortcode;
그리고 바로 닫는 </body>
태그 앞에는 :
foreach ($delayed_scripts as $script) {
echo $delayed_script;
}
당신이 할 수있는 좋은 점 중 하나는 문제가 어디에 있는지 정의하고 해당 스크립트의 위치를 9999로 옮기는 것입니다.이 스크립트는 하드 코어 솔루션이지만 작동 할 수 있습니다. 인라인 js가 바닥 글에 있으면 두 번째로 PHP에서 파서를 만들었습니다. 'ob_start()'스크립트를 배열에 넣고 특정 스크립트를 마지막으로 이동하면 'ob_get_clean()'과 같은 방식으로 전체 페이지를 구문 분석하고 PHP 내부의 HTML에서 테마를 조작 할 수 있습니다. 나는 여러 번 전에 그것을한다. –
WordPress에 연결 방법을 찾고 있습니다. 다른 방법은 너무 공격적입니다 ... –