맞춤 게시물 유형과 함께 template_include 사용


11

플러그인 디렉토리의 파일로 돌아 가기 전에 테마 폴더에서 적절한 템플릿을 확인하고 싶습니다. 내 코드는 다음과 같습니다.

add_filter ( 'template_include', 'sermon_template_include');
sermon_template_include ($ template) 함수 {
    if (get_query_var ( 'post_type') == 'wpfc_sermon') {
        if (is_archive () || is_search ()) :
           if (file_exists (TEMPLATEDIR. '/archive-wpfc_sermon.php'))
              TEMPLATEDIR을 리턴하십시오. '/archive-wpfc_sermon.php';
           dirname (__ FILE__)을 리턴하십시오. '/views/archive-wpfc_sermon.php';
        다른 :
           if (file_exists (TEMPLATEDIR. '/single-wpfc_sermon.php'))
              TEMPLATEDIR을 리턴하십시오. '/single-wpfc_sermon.php';
           dirname (__ FILE__)을 리턴하십시오. '/views/single-wpfc_sermon.php';
        엔디 프;
    }
    $ template을 반환;
}

문제는 작동하지 않습니다! :-) 항상 플러그인 폴더에서 파일을 선택합니다. 어떻게해야할지 아십니까? 많은 변형을 시도했지만 아무것도 작동하지 않는 것 같습니다! 미리 감사드립니다! 잭

편집하다

테마 폴더에서 archive-wpfc_sermon.php가 반환 될 것으로 예상합니다. 그러나 플러그인의 파일은 항상 반환됩니다. 당신의 도움을 주셔서 감사합니다! 이것은 저장소에서 사용 가능한 Sermon Manager 플러그인의 것입니다.


플러그인 템플리트 파일이 리턴 될 것으로 예상 할 때 어떤 테마 템플리트 파일이 리턴됩니까?
— Chip Bennett

테마 폴더에서 archive-wpfc_sermon.php가 반환 될 것으로 기대합니다. 그러나 플러그인의 파일은 항상 반환됩니다. 당신의 도움 @ChipBennett에 감사드립니다! 이것은 저장소에서 사용 가능한 Sermon Manager 플러그인의 것입니다.
— Jack

답변:


6

따라서 문제의 원인을 정확히 모르지만 다음을 시도해 볼 수 있습니다.

  1. 파일 경로를 플러그인 : 교체 dirname(__FILE__)와 함께plugin_dir_path( __FILE__ )
  2. 테마 파일 경로 : 교체 TEMPLATEDIR와 함께get_stylesheet_directory()

그것은이다 가능한 문제가 직접 상수를 참조에서 온다.


0

이것이 당신에게 효과가 있는지 확실하지 않지만 한 번 가치가 있습니다. 나는 특별한 템플릿이 필요할 때 사용자 정의 게시물 유형에 항상 이것을 사용합니다.

// Template selection Defines the template for the custom post types.
function my_template_redirect()
  {
  global $wp;
  global $wp_query;
  if ($wp->query_vars["post_type"] == "your_custom_post_type")
  {
    // Let's look for the your_custom_post_type_template.php template 
   // file in the current theme
    if (have_posts())
      {
          include(TEMPLATEPATH . '/your_custom_post_type_template.php');
          die();
      }
      else
      {
          $wp_query->is_404 = true;
      }
    }
}

이 스크립트를 functions.php 파일에 추가하고 템플릿 파일을 테마 디렉토리에 추가하기 만하면됩니다.

이것은 가치가 있으며 플러그인과 충돌하지 않을 수 있습니다. 그러나 나는 그것을 확신하지 못한다.

잊어 버렸습니다 ... 액션을 추가하는 것을 잊지 마십시오. :)

add_action("template_redirect", 'my_template_redirect');

감사합니다 @Nicole, 게시 한 코드는 템플릿 파일을 호출하는 데 효과적입니다. 그러나 플러그인 폴더에로드하기 전에 현재 테마 폴더에서 동일한 이름의 파일을 스캔하고 싶습니다.
— Jack

@ 잭, 기본적으로 현재 테마 디렉토리의 템플릿 전에 플러그인 디렉토리에서 파일을 호출합니까? 흠, 이것에 대해 다시 한 번 생각해야 할 것입니다. : DI는 좋은 도전을 좋아합니다!
— Nicole

맞습니다! 그것은 정말로 저를 비틀 거리게했다.
— Jack

@ 잭, 이것은 바보 같은 질문처럼 들릴 수 있으므로 그렇다면 용서하십시오. :) 게시 한 코드는 플러그인에 있거나 코드가 functions.php 파일에 있습니까?
— Nicole

@Jack 위의 코드는 테마 디렉토리에서 템플릿 파일을 검색합니다. if 문을 사용하여 'include'가 작동했는지 확인하고, 그렇지 않은 경우 플러그인 디렉토리에서 템플리트를 검색하십시오.
— Stephen Harris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.