특정 페이지 템플릿의 wp enqueue 스타일


24

테마를 처리하는 중입니다. 페이지 템플릿을 사용하여 방문 페이지를 추가하고 싶습니다. 특정 페이지 템플릿의 스타일이나 js를 큐에 넣는 방법을 보여주는 곳을 찾을 수 없습니다. 어떤 제안이라도. 전의. 방문 페이지 1-landing-page-template-one.php는 블로그 나 홈페이지와는 매우 다른 스타일과 js가 필요합니다.

답변:


29

많은 WP 개발을 할 계획이라면이 페이지를 즐겨 찾기에 추가해야합니다 : http://codex.wordpress.org/Conditional_Tags

다른 답변은 효과가 있지만 조건부 변경은 페이지 슬러그 (myurl.com/this-is-the-slug)에 의존하지 않습니다. 보다 안정적인 방법 (IMO)과이 경우에 적합한 방법은 is_page_template('example-template.php')조건부 검사를 대신 사용하는 것입니다.


22

is_page( 'landing-page-template-one' )페이지 특정 스타일 / 스크립트 주위 의 조건을 전체 대기열에 포함시킬 수 있습니다.

function my_enqueue_stuff() {
  if ( is_page( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

elseif다른 페이지 등을 위해 위의 내용 을 더 많이 연결할 수도 있습니다 .

참조 : 함수 참조-is_page()


숀을 환영합니다. 기꺼이 도와 드리겠습니다.
Edward Caissie

2
is_page_template()페이지 슬러그가 쉽게 변경되므로 사용하는 것이 바람직 하다고 생각 합니다. 이 솔루션은 제대로 작동하지만 슬러그가 변경되면 작동하지 않습니다. 미래에 누군가 문제가 발생하면 kchjr의 솔루션을 참조하십시오.
BODA82

고맙습니다! 이것을 우연히 본 다른 사람들을 위해 : 조건문 is_page은 반드시 행동에 첨부 된 기능에 있어야하며, add_action문장 자체를 감싸지 않아야 합니다. add_action명령문을 조건부로 랩핑하면 페이지 처리 초기에 명령문이 어떤 페이지인지 알 수 있습니다.
Hendeca

2

페이지 템플리트가 테마의 서브 디렉토리에있는 경우 (WP 3.4부터) 폴더 이름 및 슬래시를 템플리트 파일 이름 앞에 추가하십시오 (예 :

is_page_template( 'templates/about.php' );

따라서 전체 기능은 다음과 같습니다.

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

참조 : 공식 문서


is_page_template ()검사가 enqueue 함수 내부에 있어야하며 주변에 있어야한다는 점을 언급 해 주셔서 감사 합니다.
gregn3

1

다른 답변에 제공된 솔루션이 작동하는 데 사용되었는지는 알 수 없지만 (답변이 없기 때문에) 정답이 현재 다음과 같습니다.

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );

https://developer.wordpress.org/reference/functions/is_page_template/ 에 따르면 is_page_template ()은 루프 외부에서만 작동합니다 .



루프 외부 . 그것이 내가 말한 것입니다 ... * 홍당무 *
richplane

1

템플릿 이름이 적당 하고 해당 페이지에 부트 스트랩을로드하여 다음과 같은 특정 페이지 템플릿에 스타일을 넣을 수 있다고 가정하십시오.

function.php 파일로 이동하여 다음과 같은 조건을 확인하십시오.

function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

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