특정 게시물 및 / 또는 페이지에 자바 스크립트 파일을 추가하는 가장 효율적인 방법은 무엇입니까?


17

게시물 및 / 또는 페이지 용으로 자바 스크립트 파일을 추가하는 가장 효율적인 방법이 무엇인지 궁금합니다.

내가 생각해 낸 몇 가지 해결책은 다음과 같습니다.

  • HTML 편집보기로 전환하고 거기에 JavaScript를 게시하십시오 (꽤 나쁜 해결책)
  • 키 및 값 쌍에서 해당 게시물 / 페이지에 대한 특정 JavaScript가있는 사용자 정의 필드
  • footer.php에서 현재 페이지에 따라 JavaScript 파일을로드하십시오 (많은 조건부로 이어집니다)

참고로, JavaScript 파일은 페이지간에 공유되지 않으며 문자 그대로 현재보고있는 내용에 따라 다릅니다.

이견있는 사람?


메타 박스 / 사용자 정의 필드는 당신의 최선의 선택입니다
미하 Rekar

효율성을 어떻게 정의 하시겠습니까?
fuxia

1
'효율적인'이란 최소의 코드 중복성과 단일 게시물 / 페이지에 대해이를 수행하는 가장 효과적인 방법을 의미합니다.
mousesports

답변:


30

효율성과 자바 스크립트를 추가하기 위해 적절한 워드 프레스 방법을 사용하는 것이 가장 좋은 균형이라고 생각합니다.이 행을 따라 테마 functions.php 파일에 무언가를 추가하는 것입니다. 예를 들어 :

functions.php :

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name is the post slug which is more consistent for matching to here
        {
            case 'home':
                wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
                break;
            case 'about-page':
                wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
                break;
            case 'some-post':
                wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
                break;
        }
    } 
}

add_action('wp_enqueue_scripts', 'load_scripts');

이것은 어디에로드 될지를 완벽하게 제어 할 수 있도록한다. 테마가로드되는 위치를 편집하기위한 함수 functions.php 파일의 중앙 위치 :이 방법은 워드 프레스 메소드를 사용하여 게시물과 페이지에 안전하게 자바 스크립트를 추가한다 .


1
좋은 작은 기능. 당신은 '중앙 위치'를 갖는 것이 유용하다는 것에 옳습니다. 무리 감사.
mousesports

3
나는 이것이 조금 정리 될 수 있다고 생각한다. 기본적으로 두 개의 다른 스위치 케이스로 동일한 것을 확인합니다. 스위치 케이스와 조건부 if가 될 수있는 조건을 모두 결합한다고 말하고 싶습니다 if (is_page() || is_single()). 벤은 어떻게 생각하세요?
mousesports

나에게 개선처럼 들린다. 좋은 것!
Ben HartLenn

@ Ben은 functions.php 테마 또는 wp-includes 중 하나 입니까? 내 페이지 제목은 홈 온라인 액세스 이며 기능 home을 변경 Access to Home Online했지만 작동하지 않습니까?
Ciasto piekarz

@Ciastopiekarz 코드가 테마 functions.php 파일로 이동한다는 것을 더 잘 보여주기 위해 내 대답을 업데이트했습니다.
벤 하트 런

2

내가 할 일은 바닥 글이나 머리글에 넣고 PHP 조건을 사용하는 것입니다.

예를 들면 다음과 같습니다.

<?php if (is_page ('your-page')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } elseif ( is_page ('another')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } else { ?>

  <script type="text/javascript" src"the file path"></script>

<?php } ?>

이렇게하면 각 페이지에서 항상 모든 스크립트를 호출하지 않고 필요한 스크립트를 호출 할 수 있습니다.

다음은 Wordpress 코덱스 http://codex.wordpress.org/Conditional_Tags에 대한 링크입니다 .

또한 게시물별로 호출해야하는 특수 스크립트가있는 경우 사용자 정의 필드를 사용하십시오.


감사합니다 Nicole-이것은 # 3입니다. 많은 페이지를 가지지 않을 것이라는 점을 고려하면 괜찮은 해결책입니다 ... 여전히 고려하십시오.
mousesports

위의 내용은 is_categories, is_single (posts), is_post_type ...과 같은 워드 프레스 코덱의 다양한 항목과 함께 사용할 수 있습니다. 위의 답변에 워드 프레스의 조건 목록에 대한 링크를 추가했습니다.
Nicole

0

다른 테스트 방법은 편집기에서 직접 페이지에 추가하고 스크립트 태그에 주석을 추가하면 작동하지 않는 것입니다.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.