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_script와 wp_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.