답변:
Rarst가 대답 한 것처럼 코어 파일을 편집하거나 페이지 속성 메타 박스를 제거하지 않고 약간의 수정으로 동일한 코드를 사용하여 만들 수 있습니다. 아래 코드는 /admin/include/meta-boxes.php의 코드이며 추가 페이지 템플릿 옵션의 위치를 나타내는 주석을 추가했습니다.
function page_attributes_meta_box($post) {
$post_type_object = get_post_type_object($post->post_type);
if ( $post_type_object->hierarchical ) {
$pages = wp_dropdown_pages(array('post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0));
if ( ! empty($pages) ) {
?>
<p><strong><?php _e('Parent') ?></strong></p>
<label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
<?php echo $pages; ?>
<?php
} // end empty pages check
} // end hierarchical check.
if ( 'page' == $post->post_type && 0 != count( get_page_templates() ) ) {
$template = !empty($post->page_template) ? $post->page_template : false;
?>
<p><strong><?php _e('Template') ?></strong></p>
<label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
// add your page templates as options
</select>
<?php
} ?>
<p><strong><?php _e('Order') ?></strong></p>
<p><label class="screen-reader-text" for="menu_order"><?php _e('Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
<p><?php if ( 'page' == $post->post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?></p>
<?php
}
이것이 귀하의 경우에 수정인지는 모르지만 플러그인 내장 테마에 게시물 유형을 표시해야 할 때 스마일 러 사례가 있었고 사용 add_filter('the_content', 'my-function');
하고 내 기능으로 출력을 표시했습니다.
또 다른 옵션은 플러그인이 현재 테마 디렉토리에 템플릿 파일을 작성하도록하는 것입니다.
function create_plugins_theme_file(){
$file_name = TEMPLATEPATH . '/' . $tamplate_name . '.php';
$handle = fopen($file_name, 'w') or wp_die('Cannot open file for editing');
$file_contents = <<<OUT
<?php
/*
Template Name: $tamplate_name
*/
?>
//you theme file here
OUT;
fwrite($handle, $file_contents);
fclose($handle);
}
파일이 있는지 먼저 확인한 후에 실행할 수 있습니다.
if(!file_exists( $file_name)){create_plugins_theme_file();}
이 중 하나가 도움이 되길 바랍니다.
나는 당신이 달성하려고하는 것을 적어도 확실하게 확신하지 못합니다. 적어도 플러그인이 그렇게하기를 원할 것입니다.
다른 페이지 템플리트를 작성하는 일반적인 절차는 다음과 같습니다.
ACTIVE 테마 디렉토리에 새 페이지 템플리트를 작성하십시오 (page.php 사본 작성).
템플릿 이름 (파일 내부)을 변경하십시오.
/ * 템플릿 이름 : 전체 너비 페이지 * /
달성하려는 페이지 코드를 변경하십시오.
이제 새 페이지를 만들고 사용할 "템플릿"을 선택할 수 있습니다.
...
그게 당신이 달성하려는 것입니까?
공식 문서 : http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates
register_theme_directory()
소개 된 이유 중 하나를 수행하지 않습니까?
http://core.trac.wordpress.org/ticket/10467
당시 BuddyPress와 관련된 문제였으며, 여기저기서 추가 템플릿을 던지기를 원했습니다.
그래도 페이지 템플릿으로 올바르게 나열되지 않은 것으로 생각합니다.