0

나는 웹 페이지마다 템플릿 부분을 만들 수있는 커스텀 테마가있는 워드 프레스 웹 사이트를 가지고있다. 특정 페이지 템플릿 (예 : abc.php)이로드 될 때 header.php에 body 태그에 특정 클래스 (예 : abc)를 포함/삽입하고 싶습니다.특정 WordPress 페이지 템플릿이로드 될 때 body 태그에 특정 클래스 이름을 삽입 할 수없는 이유는 무엇입니까?

처음에는 header.php에 코드가 사용되었습니다.

<body <?php if (is_page_template('template-parts/page/abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

은 그 때 나는 functions.php에 울부 짖는 코드를 추가하지만 중 하나를 작동하지 않습니다.

add_filter('body_class','abc_class'); 
function abc_class($classes) { 

    if (is_page_template('template-parts/page/abc.php')) { 
     $classes[] = 'abc'; 
    } 

    return $classes; 

} 

내가 여기서 잘못하고있는 것을 이해하지 못합니다. 이 문제를 어떻게 해결할 수 있습니까? 모든 is_page_template() 함수의

답변

0

나는 그래서 슬러그를 취하고 있음을 주입하는 것이 functions.php에 다음을 추가 할 수 있었다 특정 페이지가로드 될 때마다 body 클래스에 추가됩니다.

add_filter('body_class', function($classes) { 
if (is_page()){ 
    $slug = get_queried_object()->post_name; 
    return array_merge($classes, array($slug)); 
} 
    return $classes; 
}); 
0

먼저 내가 파일

/* 
* Template name: Your Super Template 
*/ 

그래서, 함수가 true를 반환의 시작 부분에 가지고있는이 템플릿 페이지가 실제로 표시되는 의미, WP 템플릿 작동합니다. body_class() 함수는 각 페이지 템플릿에 고유 한 클래스를 추가하기 때문에 사용자 본문 클래스를 추가 할 필요가 없습니다.

둘째, 페이지 템플릿은 테마 디렉토리 자체 또는 1에있을 수 있습니다. -Level 하위 디렉토리, 그래서

<body <?php if (is_page_template('abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

또는

<body <?php if (is_page_template('page-templates/abc.php')) { body_class('abc'); } else { body_class(); } ?>> 

2 수준의 하위 디렉토리에있는 당신의 템플릿, 그래서 그것은 템플릿 부분입니다, 실제로 페이지 템플릿 없습니다.

그래서, 두 단어로, 함수 is_page_template는() 페이지 템플릿입니다하지만 템플릿 부품

관련 문제