바닥 글에 스크립트를 넣을 수 없습니까?


10

워드 프레스 코덱스 다음과 같이 말합니다 .

( 이전 코덱스 페이지 )

$ in_footer

(부울) (선택 사항) 일반적으로 스크립트는 섹션에 배치됩니다. 이 매개 변수가 true이면 스크립트가의 맨 아래에 배치됩니다. 이를 위해서는 테마에 적절한 위치에 wp_footer () 후크가 있어야합니다. 바닥 글에 배치 되더라도 wp_head가 실행되기 전에 스크립트를 큐에 넣어야합니다. (WordPress 2.8의 새로운 기능) 기본값 : false

그래서 true각 스크립트 뒤에 추가했습니다 src path.

/**
     * JavaScript
     */

    function my_scripts_method() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
        wp_enqueue_script( 'jquery' );
    }

    add_action('wp_enqueue_scripts', 'my_scripts_method');

    function media_queries_script() {
        wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
        wp_enqueue_script( 'mediaqueries' );
    }

    add_action('wp_enqueue_scripts', 'media_queries_script');

    function custom_script() {
        wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
        wp_enqueue_script( 'custom' );
    }

    add_action('wp_enqueue_scripts', 'custom_script');

    function replace_script() {
        wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
        wp_enqueue_script( 'replace' );
    }

    add_action('wp_enqueue_scripts', 'replace_script');

그러나 스크립트는 여전히 헤더에 포함되어 있습니다.

그 문제를 해결할 제안이 있습니까?

답변:


18

코드를 어디에 넣었습니까?

  1. 은 "진정한"인수는 간다 wp_register_script();아닌wp_enqueue_script() ;

기능은 다음과 같습니다

<?php wp_enqueue_script('handle', 'src', 'deps', 'ver', 'in_footer'); ?>

의미

    <?php wp_enqueue_script('NameMySccript', 'path/to/MyScript', 
'dependencies_MyScript', 'VersionMyScript', 'InfooterTrueorFalse'); ?>

EG

<?php wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true); ?>

  1. <?php wp_footer(); ?> 페이지 끝에 테마가 있습니까?

3.로 액션 추가 add_action('wp_print_scripts', 'your function');

말한 것처럼, 모범 사례는 다음과 같습니다.

<?php  
if (function_exists('load_my_scripts')) {  
    function load_my_scripts() {  
        if (!is_admin()) {  
        wp_deregister_script( 'jquery' );  
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');  
        wp_enqueue_script('jquery');  
        wp_register_script('myscript', bloginfo('template_url').'/js/myScript.js'__FILE__), array('jquery'), '1.0', true );  
        wp_enqueue_script('myscript');  
        }  
    }  
}  
add_action('init', 'load_my_scripts');  
?>  

또는 add_action('wp_print_scripts', 'dl_register_js');


덕분에 지금 노력하고 있지만 그 배치 실현 true중 하나에서 wp_enqueue또는 wp-register_script일 잘.
janoChen

4
@ krembo99 wp_register_script()같은 양의 인수를 사용하여 $wp_scripts전역 배열과 data하위 배열에 모두 추가합니다 . 잘못된 정보를 당신의 대답의 가독성과 결합하여 -1을 줄 것입니다 (재 작업시 제거 될 것입니다).
카이저

1
나를 위해 퍼즐의 누락 부분이 <?php wp_footer(); ?>페이지 템플릿에 존재하지 않았습니다. 그 후, true매개 변수 wp_enqueue_script가 작동했습니다.
joehanna

6

종속성 매개 변수에 부울 값을 전달하고 있습니다. 이 시도:

 wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);

2
이것은 기술적으로 질문의 코드를 기반으로 한 질문에 대한 정답입니다.
AndyWarren

4

나는 같은 문제가 있었고 검색을 한 후에 내 맞춤 테마 에서이 기능이 누락되었습니다.

 <?php wp_footer();?>

3

wp_enqueue_script 또는 wp_register_script를 사용하여 바닥 글에 스크립트를로드 할 때 다른 매개 변수도 비어 있어도 포함시켜야합니다.

난 노력했다..

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js',  true);

@janoChen이 알아 차린대로 작동하지 않았습니다. 워드 프레스

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

따라서 '',함수를 인라인으로 선언하려면 사용하지 않는 매개 변수 를 포함해야합니다 . 따라서 아래 코드는 계획대로 작동합니다.

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);

이후 @Brian Fegter 쇼와 같은 형식으로 배열에서 함수를 선언 할 수 있습니다.


자리 표시자가 필요한 경우에만 빈 문자열을 제공해야합니다.
s_ha_dum

어 그래! 물론, '',매개 변수가 필요한 경우에만 선택 사항은 아닙니다.
Andrew-ThinkUp

2

스크립트를 헤더에 대기열에 넣지 만 바닥 글에 대기열에 포함 된 스크립트에 대한 종속성을 선언하면 WordPress는 바닥 글 스크립트를 헤더로 이동하여 종속 스크립트에서 사용할 수 있도록합니다.


1

공식 WordPress 문서에 따르면 (최종 확인-2018 년 5 월) :

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

7 년 이상의 개인적인 경험.

  1. 설치된 플러그인 / 테마와의 호환성을 높이려면 항상 ' wp_enqueue_scripts '기능을 사용해야 합니다.

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
  2. 공식 문서 사용법 에 대한 자세한 내용은 여기를 참조하십시오.

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Personal recommendation
             *  - I strongly recommend registering all scripts before enqueueing,
             *  again -> for better compatibility with other developers. 
             *  :::: For example, so others could manipulate the position 
             *       of your scripts using the wp_dequeue_*type* method. 
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Official Docs
             *   $in_footer
             *      - (bool) (Optional) Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
             *      - Default value: false
             *
             ***/
    
             // examples:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // remove conflicting script
    
             wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); 
             wp_enqueue_script($handle);
             wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true);  // re-enqueue scripts after yours for example to elimination of conflicts
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');

추신이 답변이 도움이된다면, '▲'( ArrowUP )로 알려주십시오. 개선 될 것이라고 생각되면 아래에 의견을 남겨 주십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.