2013-02-01 2 views
0

Wordpress 편집기로 들어가면 템플릿 파일은 파일 이름순으로 정렬됩니다. 예를 들면 :워드 프레스 편집기에서 템플릿 순서 변경

404.php footer.php 전면 page.php ... .. page.php

가 "에 의해 정렬되도록 나는이 목록을 넣고 싶습니다 템플리트 파일 내에 정의 된 "템플리트 이름".

이것이 가능합니까?

답변

0

죄송 합니다만, theme-editor.php 나 class-wp-theme.php에는 사용할 수있는 고리가 없으므로 파일 목록을 정렬 할 수 있습니다.

WordPress는 사용자 지정 검색 기능을 사용하여 파일을 가져온 다음 foreach 루프를 통해 간단히 인쇄합니다.

변경하려면 WordPress 관리 코어 파일을 수정해야하며 사용하지 않는 것이 좋습니다.

EDIT : WordPress 설치 내에서 약간의 수정만으로이 주문을 변경할 수 있습니다.

function adjust_the_wp_menu() { 
    remove_submenu_page('themes.php', 'theme-editor.php'); 
    add_submenu_page('themes.php', _x('Editor', 'theme editor'), _x('Editor', 'theme editor'), 'edit_themes', 'my-theme-editor.php'); 
} 

이 코드는 당신이를 만든 가정 : 당신은 관리자 및 광고 (WP - 관리자 디렉토리에있는) 사용자 지정 테마 - editor.php 또 다른 링크이 방법에서 기본 테마 편집기 메뉴를 제거하는 플러그인을 준비 할 수 있습니다 theme-editor.php와 똑같은 내용의 theme-editor.php (my-theme-editor.php)의 사본. 유일한 테마는 my-theme-editor.php 파일 내의 모든 "theme-editor.php"항목을 "my-theme-editor.php"로 바꾸는 것입니다.

편집기를 클릭하면 관리자 메뉴에서이 파일을 입력 할 때보 다 항상이 파일을 입력하게됩니다. 그리고 전체 파일이 당신 것이고 원하는 방식으로 주문을 변경하려고 할 수 있습니다. 그렇다면 올바른 방식으로 파일을 반복 처리해야합니다. 그렇게 어렵지는 않지만 PHP 파일에 추가되는 스타일 시트에도 attantion을 지불해야합니다 ...

그리고 현재, 나는 당신을 위해 my-theme-editor.php 파일을 준비했습니다;) 여기 있습니다 :

대체 문자열 "테마 editor.php"를 제외하고
<?php 
/** 
* Theme editor administration panel. 
* 
* @package WordPress 
* @subpackage Administration 
*/ 

/** WordPress Administration Bootstrap */ 
require_once('./admin.php'); 

if (is_multisite() && ! is_network_admin()) { 
    wp_redirect(network_admin_url('my-theme-editor.php')); 
    exit(); 
} 

if (!current_user_can('edit_themes')) 
    wp_die('<p>'.__('You do not have sufficient permissions to edit templates for this site.').'</p>'); 

$title = __("Edit Themes"); 
$parent_file = 'themes.php'; 

get_current_screen()->add_help_tab(array(
'id'  => 'overview', 
'title'  => __('Overview'), 
'content' => 
    '<p>' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '</p> 
    <p>' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '</p> 
    <p>' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '</p> 
    <p id="newcontent-description">' . __('In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.') . '</p> 
    <p>' . __('After typing in your edits, click Update File.') . '</p> 
    <p>' . __('<strong>Advice:</strong> think very carefully about your site crashing if you are live-editing the theme currently in use.') . '</p> 
    <p>' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a <a href="http://codex.wordpress.org/Child_Themes" target="_blank">child theme</a> instead.') . '</p>' . 
    (is_network_admin() ? '<p>' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '</p>' : '') 
)); 

get_current_screen()->set_help_sidebar(
    '<p><strong>' . __('For more information:') . '</strong></p>' . 
    '<p>' . __('<a href="http://codex.wordpress.org/Theme_Development" target="_blank">Documentation on Theme Development</a>') . '</p>' . 
    '<p>' . __('<a href="http://codex.wordpress.org/Using_Themes" target="_blank">Documentation on Using Themes</a>') . '</p>' . 
    '<p>' . __('<a href="http://codex.wordpress.org/Editing_Files" target="_blank">Documentation on Editing Files</a>') . '</p>' . 
    '<p>' . __('<a href="http://codex.wordpress.org/Template_Tags" target="_blank">Documentation on Template Tags</a>') . '</p>' . 
    '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>' 
); 

wp_reset_vars(array('action', 'error', 'file', 'theme')); 

if ($theme) 
    $stylesheet = $theme; 
else 
    $stylesheet = get_stylesheet(); 

$theme = wp_get_theme($stylesheet); 

if (! $theme->exists()) 
    wp_die(__('The requested theme does not exist.')); 

if ($theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code()) 
    wp_die(__('The requested theme does not exist.') . ' ' . $theme->errors()->get_error_message()); 

$allowed_files = $theme->get_files('php', 1); 
//BINDA: Copy allowed files before stylesheets are added to your own varible to be able to sort templates without stylesheets 
$myallowed_files = $allowed_files; 
$has_templates = ! empty($allowed_files); 
$style_files = $theme->get_files('css'); 
$allowed_files['style.css'] = $style_files['style.css']; 
$allowed_files += $style_files; 

if (empty($file)) { 
    $relative_file = 'style.css'; 
    $file = $allowed_files['style.css']; 
} else { 
    $relative_file = stripslashes($file); 
    $file = $theme->get_stylesheet_directory() . '/' . $relative_file; 
} 

validate_file_to_edit($file, $allowed_files); 
$scrollto = isset($_REQUEST['scrollto']) ? (int) $_REQUEST['scrollto'] : 0; 

switch($action) { 
case 'update': 
    check_admin_referer('edit-theme_' . $file . $stylesheet); 
    $newcontent = stripslashes($_POST['newcontent']); 
    $location = 'my-theme-editor.php?file=' . urlencode($relative_file) . '&theme=' . urlencode($stylesheet) . '&scrollto=' . $scrollto; 
    if (is_writeable($file)) { 
     //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable 
     $f = fopen($file, 'w+'); 
     if ($f !== false) { 
      fwrite($f, $newcontent); 
      fclose($f); 
      $location .= '&updated=true'; 
      $theme->cache_delete(); 
     } 
    } 
    wp_redirect($location); 
    exit; 
break; 

default: 

    require_once(ABSPATH . 'wp-admin/admin-header.php'); 

    update_recently_edited($file); 

    if (! is_file($file)) 
     $error = true; 

    $content = ''; 
    if (! $error && filesize($file) > 0) { 
     $f = fopen($file, 'r'); 
     $content = fread($f, filesize($file)); 

     if ('.php' == substr($file, strrpos($file, '.'))) { 
      $functions = wp_doc_link_parse($content); 

      $docs_select = '<select name="docs-list" id="docs-list">'; 
      $docs_select .= '<option value="">' . esc_attr__('Function Name...') . '</option>'; 
      foreach ($functions as $function) { 
       $docs_select .= '<option value="' . esc_attr(urlencode($function)) . '">' . htmlspecialchars($function) . '()</option>'; 
      } 
      $docs_select .= '</select>'; 
     } 

     $content = esc_textarea($content); 
    } 

    ?> 
<?php if (isset($_GET['updated'])) : ?> 
<div id="message" class="updated"><p><?php _e('File edited successfully.') ?></p></div> 
<?php endif; 

$description = get_file_description($file); 
$file_show = array_search($file, array_filter($allowed_files)); 
if ($description != $file_show) 
    $description .= ' <span>(' . $file_show . ')</span>'; 
?> 
<div class="wrap"> 
<?php screen_icon(); ?> 
<h2><?php echo esc_html($title); ?></h2> 

<div class="fileedit-sub"> 
<div class="alignleft"> 
<h3><?php echo $theme->display('Name'); if ($description) echo ': ' . $description; ?></h3> 
</div> 
<div class="alignright"> 
    <form action="my-theme-editor.php" method="post"> 
     <strong><label for="theme"><?php _e('Select theme to edit:'); ?> </label></strong> 
     <select name="theme" id="theme"> 
<?php 
foreach (wp_get_themes(array('errors' => null)) as $a_stylesheet => $a_theme) { 
    if ($a_theme->errors() && 'theme_no_stylesheet' == $a_theme->errors()->get_error_code()) 
     continue; 

    $selected = $a_stylesheet == $stylesheet ? ' selected="selected"' : ''; 
    echo "\n\t" . '<option value="' . esc_attr($a_stylesheet) . '"' . $selected . '>' . $a_theme->display('Name') . '</option>'; 
} 
?> 
     </select> 
     <?php submit_button(__('Select'), 'button', 'Submit', false); ?> 
    </form> 
</div> 
<br class="clear" /> 
</div> 
<?php 
if ($theme->errors()) 
    echo '<div class="error"><p><strong>' . __('This theme is broken.') . '</strong> ' . $theme->errors()->get_error_message() . '</p></div>'; 
?> 
    <div id="templateside"> 
<?php 
if ($allowed_files) : 
    if ($has_templates || $theme->parent()) : 
?> 
    <h3><?php _e('Templates'); ?></h3> 
    <?php if ($theme->parent()) : ?> 
    <p class="howto"><?php printf(__('This child theme inherits templates from a parent theme, %s.'), '<a href="' . self_admin_url('my-theme-editor.php?theme=' . urlencode($theme->get_template())) . '">' . $theme->parent()->display('Name') . '</a>'); ?></p> 
    <?php endif; ?> 
    <ul> 
<?php 
    endif; 

//Loop throught myallowed files (copied abowe) and replace cutom page templates key 
    foreach ($myallowed_files as $file => $full_path) { 
     if (! preg_match('|Template Name:(.*)$|mi', file_get_contents($full_path), $header)) 
      continue; 
     unset($myallowed_files[ $file ]); 
     $myallowed_files[ strtolower(_cleanup_header_comment($header[1])) ] = $full_path; 
    } 
//Sort by key 
    ksort($myallowed_files); 
//Add stylesheets 
    $style_files = $theme->get_files('css'); 
    $myallowed_files['style.css'] = $style_files['style.css']; 
    $myallowed_files += $style_files; 
//Loop myallowed files in desired order 
    foreach ($myallowed_files as $filename => $absolute_filename) : 
     if ('style.css' == $filename) 
      echo "\t</ul>\n\t<h3>" . _x('Styles', 'Theme stylesheets in theme editor') . "</h3>\n\t<ul>\n"; 

     $file_description = get_file_description($absolute_filename); 
     if ($file_description != basename($filename)) 
      $file_description .= '<br /><span class="nonessential">(' . $filename . ')</span>'; 

     if ($absolute_filename == $file) 
      $file_description = '<span class="highlight">' . $file_description . '</span>'; 
?> 
     <li><a href="my-theme-editor.php?file=<?php echo urlencode($filename) ?>&amp;theme=<?php echo urlencode($stylesheet) ?>"><?php echo $file_description; ?></a></li> 
<?php 
    endforeach; 
?> 
</ul> 
<?php endif; ?> 
</div> 
<?php if ($error) : 
    echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>'; 
else : ?> 
    <form name="template" id="template" action="my-theme-editor.php" method="post"> 
    <?php wp_nonce_field('edit-theme_' . $file . $stylesheet); ?> 
     <div><textarea cols="70" rows="30" name="newcontent" id="newcontent" aria-describedby="newcontent-description"><?php echo $content; ?></textarea> 
     <input type="hidden" name="action" value="update" /> 
     <input type="hidden" name="file" value="<?php echo esc_attr($relative_file); ?>" /> 
     <input type="hidden" name="theme" value="<?php echo esc_attr($theme->get_stylesheet()); ?>" /> 
     <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" /> 
     </div> 
    <?php if (! empty($functions)) : ?> 
     <div id="documentation" class="hide-if-no-js"> 
     <label for="docs-list"><?php _e('Documentation:') ?></label> 
     <?php echo $docs_select; ?> 
     <input type="button" class="button" value=" <?php esc_attr_e('Lookup'); ?> " onclick="if ('' != jQuery('#docs-list').val()) { window.open('http://api.wordpress.org/core/handbook/1.0/?function=' + escape(jQuery('#docs-list').val()) + '&amp;locale=<?php echo urlencode(get_locale()) ?>&amp;version=<?php echo urlencode($wp_version) ?>&amp;redirect=true'); }" /> 
     </div> 
    <?php endif; ?> 

     <div> 
     <?php if (is_child_theme() && $theme->get_stylesheet() == get_template()) : ?> 
      <p><?php if (is_writeable($file)) { ?><strong><?php _e('Caution:'); ?></strong><?php } ?> 
      <?php _e('This is a file in your current parent theme.'); ?></p> 
     <?php endif; ?> 
<?php 
    if (is_writeable($file)) : 
     submit_button(__('Update File'), 'primary', 'submit', true); 
    else : ?> 
<p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p> 
<?php endif; ?> 
     </div> 
    </form> 
<?php 
endif; // $error 
?> 
<br class="clear" /> 
</div> 
<script type="text/javascript"> 
/* <![CDATA[ */ 
jQuery(document).ready(function($){ 
    $('#template').submit(function(){ $('#scrollto').val($('#newcontent').scrollTop()); }); 
    $('#newcontent').scrollTop($('#scrollto').val()); 
}); 
/* ]]> */ 
</script> 
<?php 
break; 
} 

include(ABSPATH . 'wp-admin/admin-footer.php'); 

는 "내-테마 editor.php"은 라인 (62)에서와보다 더 변화가, 라인 (180)

그러나에, 하나 확장하기 주의 깊게 사용하십시오. 제대로 테스트하지는 않았지만 제대로 작동하는 것 같습니다. 펀치 라인은, 당신이 플러그인 메뉴를 제거하고 my-theme-editor.php에 대한 링크로 바꾸면 my-theme-editor.php 파일이 새로운 버전으로 대체되지 않는다는 것입니다. 워드 프레스. 그리고 그것이 제거되면, 당신은 단순히 그것을 다시 복사 할 수 있습니다.

관련 문제