jQuery가 필요한 바닥 글에 자바 스크립트 스 니펫을 추가하는 방법


27

이 코드를 사용하여 jquery가 필요한 워드 프레스 바닥 글에 스크립트 파일을 추가 할 수 있다는 것을 알고 있습니다.

<?php
function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

그러나 파일이 아닌 일반 jquery 인라인 스 니펫을 추가하려면 어떻게해야합니까? 어떻게 할 수 있습니까?

편집하다

이 스크립트를 사용하여 바닥 글에 무언가를 추가 할 수 있다는 것을 알고 있습니다.

<?php
function myscript() {
?>
<script type="text/javascript">
 // This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

그러나 사용되는 스크립트를 지정하려면 어떻게 jquery 를 실행해야합니다.


내가 알 수있는 내장 함수가 없으므로 이유 wp_register_scriptwp_enqueue_script존재하지만 jquery 자체를 사용하여 확인할 수 있습니다.
Wyck

2
공감에 대해 죄송하지만 내 질문을 이해하지 못하는 것 같습니다. 코덱을 읽었으며 옵션에 대해 알고 있습니다. 그러나 wp_enqueue_script바닥 글에 스크립트 파일을 원하지 않고 바닥 글에 jquery가 필요한 스 니펫을 추가하고 싶습니다. 나는 코덱스에서 직접 가져온 대답을 하향 투표했다. 나는 코덱스를 읽었고 대답을 찾지 못했습니다. 그래서 질문을합니다. 코덱으로 다시 리디렉션하면 다운 보트가됩니다.
Saif Bechan

감사합니다 wyck, 나는 이것이 사실이라고 생각합니다. 질문을 올바르게 이해해 주셔서 감사합니다. 스크립트를 실행할 수 있는지 확인하는 대신 외부 JS 스크립트를 사용한다고 생각합니다.
Saif Bechan

답변:


30

이 작업을 수행하는 가장 쉬운 방법은 실제로 wp_enqueue_scriptSaif 및 v0idless가 이미 참조한 바닥 글 작업 의 조합입니다 . 테마와 플러그인에서 jQuery를 자주 사용하지만 다른 모든 스크립트도 바닥 글에 넣습니다.

실제로 대기열에 넣는 가장 좋은 방법은 다음과 같습니다.

function myscript() {
?>
<script type="text/javascript">
  if ( undefined !== window.jQuery ) {
    // script dependent on jQuery
  }
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );

function myscript_jquery() {
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );

그러나이 코드는 당신이 스크립트를 큐잉하는 사람, 즉 자신의 플러그인이나 테마 에서이 작업을 수행한다고 가정합니다.

현재 WordPress 바닥 글에 인라인 스크립트를 추가하고 종속성과 함께로드 할 수있는 방법이 없습니다. 그러나 당신이 원한다면 대안이 있습니다.

대안

WordPress는 스크립트와 함께 작동 할 때 스크립트를 내부적으로로드하여 개체를 추적합니다. 객체 내부에는 기본적으로 3 개의 목록이 있습니다.

  • 등기
  • 끝난
  • 할 것

스크립트 를 처음 등록wp_register_scripts() 하면 등록 된 목록에 배치됩니다. 때 wp_enqueue_script()스크립트, 그것은 큐 목록에 복사됩니다. 페이지에 인쇄되면 완료 목록에 추가됩니다.

따라서 jQuery가 필요하도록 바닥 글 스크립트를 대기열에 넣지 않고 jQuery 를 사용해야한다는 것을 문서화 하고 프로그래밍 방식으로 jQuery가로드되었는지 확인해야합니다.

wp_script_is()스크립트가 나열된 위치를 확인하는 데 사용 됩니다.

function myscript() {
    if( wp_script_is( 'jquery', 'done' ) ) {
    ?>
    <script type="text/javascript">
      // script dependent on jQuery
    </script>
    <?php
    }
}
add_action( 'wp_footer', 'myscript' );

당신은 할 수 뿐만 아니라 바닥 글에로드 jQuery를 강제로이 같은 코드를 사용할 수 있습니다,하지만 난 것을 테스트하지 않았습니다 ... 당신의 마일리지가 다를의 나 때문에.


제공된 코드 스 니펫이 WordPress 플러그인 개발 표준에 의해 승인됩니까? 그렇다면 플러그인에서 사용할 것입니다 ... 이것에 대한 답장을
보내

마지막 스 니펫? 아니요. WordPress 플러그인은 항상 스크립트 요구 사항을 포함 해야 합니다. 이러한 방식으로 jQuery를 큐 시스템 외부로로드하는 것은 환경을 100 % 제어하는 ​​자체 사이트에서 수행해야 할 작업입니다. 플러그인이 그렇게하는 것은 결코 적절 하지 않습니다 .
EAMann

그런 다음 제발 그에 대한 몇 가지 실례를 줄 수 있습니까 ... ????
laraib

처음으로 WordPress 플러그인을 개발 중이므로 WordPress 팀에서 승인 한 것을 원합니다 ... 응답을 기다리는 중입니다 .... 플러그인을 만들고 수락 할 수 있도록 이에 대해 말하십시오. ...
laraib

12

wordpress 4.5부터는으로 인라인 스크립트를 추가 할 수 있습니다 wp_add_inline_script(). jQuery가 필요한 바닥 글에 자바 스크립트 스 니펫을 추가하려면이 코드가 도움이됩니다.

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

워드 프레스 jquery와 wp_add_inline_script


1

다음 wp_footer과 같은 동작을 사용하십시오 .

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}

1
이것은 좋은 대답이 아닙니다. 스크립트 필수 jQuery를 지정하는 방법을 물었습니다. 사용자가 jquery를 실행하지 않으면 구현이 실행되지 않습니다.
Saif Bechan

0

OP 가 jQuery에 요구 사항을 지정하고 싶어한다는 것을 알고 WordPress의 작성자는 스 니펫을 스크립트 파일 옆에 대기열에 넣을 수 있었지만 그렇지 않은 경우 강제로 시도하지 않는 것이 좋습니다. 스크립트를 결합하고 최적화하는 다른 플러그인을 사용하고 있기 때문에 나와 같은 대기열이나 순서를 엉망으로 만들고 싶지 않다면 실제로 다음 wp_footer과 같이 조치 를 사용하십시오 .

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // your snippet
            }
        </script>
        <?php
    }
    , 21 # after enqueued footer scripts
);

-2

wp_footer이를 위해 조치를 사용할 수 있습니다 . wp_footer 의 코덱을 확인하십시오 .


알고 있지만 바닥 글에 추가하는 스크립트가 jquery에 의존하도록 어떻게 지정할 수 있습니까? 좀 더 구체적으로 편집하십시오.
Saif Bechan

사람들의 답변을 투표하기 전에 코덱을 읽어 보시겠습니까? 에 대한 in_footer논쟁에 대해 읽은 적이 wp_enqueue_script있습니까? 이 읽기 : codex.wordpress.org/Function_Reference/wp_enqueue_script를 . wp_footer동작 과 함께 사용하는 방법을 알려줍니다 .
Rutwick Gangurde
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.