Intereting Posts
Как получить содержимое пользовательского типа сообщений через идентификатор сообщения в wordpress Разбивка страниц: держите предыдущую и следующую ссылку даже на первой / последней странице Выберите, чтобы отобразить сообщение Thumbnail? Панель управления: удалить навигационное сообщение Safari Запрос WP с пользовательским Shortcode Как предотвратить удаление комментариев при удалении сообщения Фильтр term_link дает меньше атрибутов Как удалить заглушку с моей страницы? Добавить действие для создания нового сообщения после пожара wp_insert_post? Подумайте, что он создает бесконечную петлю Удалить возможности у конкретного пользователя Как создать метабокс содержимого HTML с инструкциями для редакторов при редактировании сообщения или страницы? Разница между get_category, get_term_by и get_categories tax_query не работает в шаблоне Разрешить admin-ajax.php получать «application / json» вместо «x-www-form-urlencoded» Разделение страницы на первую страницу

Есть ли способ получить все имя или пул частей шаблона, используемых на странице?

Я разрабатываю пользовательский плагин, где я использую шаблон одной страницы и изменяю части шаблона только с помощью ajax, я хочу получить шаблоны или имена шаблонов или шаблонов (например, custom-header.php, custom-footer.php, custom-sidebar .php, custom-profile.php и т. д.).

Есть ли способ получить все имена частей шаблона, которые используются на странице?

что-то вроде get_included_files() мы не можем использовать его в wordpress, так как оно может содержать сотни файлов, для меня это 156: P и неассоциативный массив: P

Solutions Collecting From Web of "Есть ли способ получить все имя или пул частей шаблона, используемых на странице?"

Вы можете отфильтровать пути include, возвращаемые get_included_files , удалив любые файлы из списка, которые не находятся в вашей теме (и / или дочерней теме):

 function get_theme_includes() { $includedfiles = get_included_files(); // normalize theme paths for matching $styledir = str_replace("\\","/",get_stylesheet_directory()); $templatedir = str_replace("\\","/",get_template_directory()); $i = 0; // loop included files foreach ($includedfiles as $includedfile) { // normalize include path for match $includedfile = str_replace("\\","/",$includedfile); // check if included file is in stylesheet directory if (substr($includedfile,0,strlen($styledir)) != $styledir) { // if stylesheet is same as template, not a child theme if ($styledir == $templatedir) {unset($includedfiles[$vi]);} else { // check if included file is in template directory if (substr($includedfile,0,strlen($templatedir)) != $templatedir) {unset($includedfiles[$i]);} else { // strip template directory from include path $pathinfo = pathinfo(str_replace(dirname($templatedir),'',$includedfile)); // add filename.php => pathinfo array to the template array $themeincludes[$pathinfo['basename']] = $pathinfo; } } } else { // strip stylesheet dir from include path $pathinfo = pathinfo(str_replace(dirname($styledir),'',$includedfile)); // add filename.php => pathinfo array to the template array $themeincludes[$pathinfo['basename']] = $pathinfo; } $i++; } return $themeincludes; } 

В зависимости от того, когда эта функция запускается, вы получите разные результаты, вы можете использовать ее в своих интересах для дальнейшего удаления ранней темы, поскольку это скорее не шаблоны страниц.

 add_action('wp_loaded','check_theme_includes'); add_action('wp_footer','check_theme_templates'); function check_theme_includes() { global $themeincludes; $themeincludes = get_theme_includes(); } function check_theme_templates() { global $themeincludes, $templateincludes; $templateincludes = get_theme_includes(); // strip out already included theme files from template list foreach ($templateincludes as $template => $pathinfo) { if (array_key_exists($template,$themeincludes)) { if ($pathinfo['dirname'] == $themeincludes[$template]['dirname']) { unset($templateincludes[$template]); } } } // debug point // echo "<!-- INCLUDED TEMPLATES: "; print_r($templateincludes); echo "-->"; // output template array for use by jquery/ajax echo "<script>var templatenames = new Array(); var templatepaths = new Array(); "; $i = 0; foreach ($templateincludes as $template => $pathinfo) { // optionally strip the .php extension $template = str_replace('.php','',$template); // output the template array key/value echo "templatenames[".$i."] = '".$pathinfo['filename']."'; "; echo "templatepaths[".$i."] = '".$pathinfo['dirname']."'; "; $i++; } echo "</script>"; } не add_action('wp_loaded','check_theme_includes'); add_action('wp_footer','check_theme_templates'); function check_theme_includes() { global $themeincludes; $themeincludes = get_theme_includes(); } function check_theme_templates() { global $themeincludes, $templateincludes; $templateincludes = get_theme_includes(); // strip out already included theme files from template list foreach ($templateincludes as $template => $pathinfo) { if (array_key_exists($template,$themeincludes)) { if ($pathinfo['dirname'] == $themeincludes[$template]['dirname']) { unset($templateincludes[$template]); } } } // debug point // echo "<!-- INCLUDED TEMPLATES: "; print_r($templateincludes); echo "-->"; // output template array for use by jquery/ajax echo "<script>var templatenames = new Array(); var templatepaths = new Array(); "; $i = 0; foreach ($templateincludes as $template => $pathinfo) { // optionally strip the .php extension $template = str_replace('.php','',$template); // output the template array key/value echo "templatenames[".$i."] = '".$pathinfo['filename']."'; "; echo "templatepaths[".$i."] = '".$pathinfo['dirname']."'; "; $i++; } echo "</script>"; } 

Например, что-то вроде этого в нижнем колонтитуле страницы:

<script>var templatenames = new Array(); var templatepaths = new Array(); templatenames[0] = 'front'; templatepaths[0] = '/bioship/sidebar'; templatenames[1] = 'subfront'; templatepaths[1] = '/bioship/sidebar'; templatenames[2] = 'index'; templatepaths[2] = '/bioship'; templatenames[3] = 'header'; templatepaths[3] = '/bioship/sidebar'; templatenames[4] = 'loop-hybrid'; templatepaths[4] = '/bioship'; templatenames[5] = 'content'; templatepaths[5] = '/bioship/content'; templatenames[6] = 'loop-nav'; templatepaths[6] = '/bioship/content'; templatenames[7] = 'footer'; templatepaths[7] = '/bioship/sidebar'; </script>

Это позволит вам сравнить эти массивы и добавить к ним обратные вызовы jQuery / javascript.