Obtenha o nome do arquivo de modelo atual
-
-
@Chodorowicz - Enquanto vouparar umpasso curto de chamar a seleção de `funções.php` como umbug,eu vou concordar completamente com suapremissa.Parapiorar os assuntos,digitalizei o códigoprincipal do WordPresse encontrei cerca de 5 lugares ondepoderiater sido umganchoparapermitir que você lide comesseproblema,masnãoencontreinenhum.Eu sugiropostar umticketno http://core.trac.wordpress.org.@chodorowicz - While I will stop one step short of calling the selection of `functions.php` as a bug, I will agree completely with your premise. To make matters worse I scanned the WordPress core code and found about 5 places where there could have been a hook to allow you to handle this issue yet I found none. I'd suggest posting a ticket on http://core.trac.wordpress.org.
- 2
- 2011-02-26
- MikeSchinkel
-
@Mikeschinkel - Obrigadopor comentários,masnão 'template_include'gancho,quet31os sugeriu,resolva oproblema?Outalvezeutenhaentendidomal você.@MikeSchinkel - thanks for comment, but doesn't `template_include` hook, which t31os suggested, solve the issue? Or maybe I've misunderstood you.
- 0
- 2011-02-27
- chodorowicz
-
@Chodorowicz - Você agorame temmuito confuso.A resposta @t31os deu resolve umproblema que émuito diferente daquele queeuentendi que vocêestavaperguntando combaseem suaperguntae seus comentários de acompanhamento às respostas do outro.Mas se a resposta @ T31os resolvesse suanecessidade real,entãominha confusão aqui é semimportância,pois suaperguntafoi respondida.@chodorowicz - You now have me very confused. The answer @t31os gave solves a problem that is very different from the one that I understood you were asking based on your question and your follow up comments to other's answers. But if @t31os' answer solved your actual need, then my confusion here is unimportant as your question has been answered.
- 0
- 2011-02-27
- MikeSchinkel
-
Sim,anecessidade realeraexibir onome do arquivotemático atualmente usado,o código queposteitinha umafalha (quepode ser resolvidomovendo afunçãofora dapastaprincipal dotema),mas a solução @t31os émuitomais limpaeCumpra anecessidade,mas,seeuentendi corretamente você,oproblema real (WPnão devetentar ler 'funções.php` como arquivo demodelo depágina) aindapersiste.Voutentarpostarna Trac,aindanãofizisso.Saudações!Yes, the actual need was to display the name of the currently used theme file, the code I posted had a flaw (which can be solved by moving the function out of the main theme folder), but @t31os' solution is much cleaner and fulfills the need, but, if I understand you correctly, the real problem (WP shouldn't try to read `functions.php` as page template file) still persists. I'll try to post it on trac, haven't done it yet. Greetings!
- 0
- 2011-02-27
- chodorowicz
-
@Mikeschinkel -játem umpatch :) http://core.trac.wordpress.org/ticket/16689@MikeSchinkel - it already has a patch :) http://core.trac.wordpress.org/ticket/16689
- 1
- 2011-02-28
- chodorowicz
-
@CHODOROWICZ - Sim,meu comentáriofoi abordando oproblema real,mantendo o WP detentar ler "funções.php"e/oupermitindo que vocêescreva umganchopara amudança seja retornado.Ficofelizem ver que vocêencontrou um remendoem vez de duplicá-lo;Étão difícilencontraressesingressosexistentes.@chodorowicz - Yes, my comment was addressing the real problem, keeping WP from trying to read `functions.php` and/or allowing you to write a hook to change was is returned. Glad to see you found a patch rather than duplicate it; it's so hard to find those existing tickets.
- 0
- 2011-02-28
- MikeSchinkel
-
^ie.Vocêpegou o código daminha respostae envolveu-oem umplugin.E vocêfeztudoisso semfornecer crédito à origem,nem eu ou o wp stackexchange ... Nice ...:/^ ie. you took the code from my answer and wrapped it into a plugin. And you did all that without providing any credit to the origin, neither myself or the WP stackexchange... nice... :/
- 4
- 2014-03-30
- t31os
-
9 respostas
- votos
-
- 2011-04-09
Aparentementeisso é suficiente:
add_action('wp_head', 'show_template'); function show_template() { global $template; echo basename($template); }
oubasta usá-lo diretamentenomodelo (eutendem aecono rodapé.phpno comentário HTML)
<?php global $template; echo basename($template); ?>
apparently this is enough:
add_action('wp_head', 'show_template'); function show_template() { global $template; echo basename($template); }
or just use it directly in template (I tend to echo in footer.php in HTML comment)
<?php global $template; echo basename($template); ?>
-
Issonãofunciona compeça deget-template apenaspara que você saiba,sómostra single.php (porexemplo)e não o arquivo queestá.That won't work with get-template-part just so you know, it only shows single.php (for example) and not the file it is in.
- 1
- 2012-09-25
- m-torin
-
Sim,é verdade.Para obter onome do arquivoincluído,vocêprovavelmenteprecisaria usar algo comoeste `echo __file __;`Yes, it's true. To get the name of included file you'd probably need to use something like this `echo __FILE__;`
- 0
- 2012-10-05
- chodorowicz
-
Isso ébom,porexemplo,em casos,quando vocêmodifica omodelopadrão sem atribuí-lo a umpostnobackoffice.Porexemplo,usando rotaspersonalizadase ofiltro Template_Include.Obrigada.this is fine, for example in cases when you modify the default template without assigning it to a post in backoffice. For example using custom routes and the template_include filter. Thank you.
- 0
- 2016-09-15
- Luca Reghellin
-
Comoeupoderiafazerisso dentro de um loop?Estoutentandogerar a URLpara umapágina de cada arquivo demodelo.How could I do this within a loop? I'm trying to output the URL to one page of each template file.
- 0
- 2017-02-28
- JacobTheDev
-
@Jacobthedev Talvez usando "echo __file__" -porqueissonãofunciona,eleexibe apenas omodeloprincipalprincipal@JacobTheDev maybe using `echo __FILE__` - because this won't work, it displays only main, initial template
- 0
- 2017-03-07
- chodorowicz
-
- 2011-02-27
Vocêpode definir uma variávelglobal durante omodelo
Template_Include
e,em seguida,verifiquemaistarde que o Global Vairablepara ver qualmodelofoiincluído.Vocênaturalmentenão desejaria o caminho completojunto com o arquivo,entãoeu recomendariatruncarpara onome do arquivo usando onome debasename
código deexemplo:
Duasfunções,umapara definir oglobal,umpara chamarisso.add_filter ('template_include','var_template_include',1000); função var_template_include ($t) { $ Globals ['Current_theme_template']=basename ($t); retornar $t; } funçãoget_current_template ($echo=false) { if (!isset ($globals ['atual_theme_template'])) retornafalso; if ($echo) echo $globais ['Current_theme_template']; outro Retornar $ Globals ['Current_theme_template']; }
Vocêpode ligar
get_current_template
ondeprecisar delenos arquivostemáticos,observandoissonaturalmenteprecisa ocorrer após omodeloTemplate_Include
a açãofoi disparada (vocênãoprecisapara sepreocupar comisso se a chamadaforfeita dentro de um arquivo demodelo).Paramodelos depágina Existe
is_page_template ()
,tendoem mente que só ajudaráno caso demodelos depágina (uma rápida pegartodas asfunções ).Informações sobrefunções usadas ou referenciadas acima:
You could set a global variable during the
template_include
filter and then later check that global vairable to see which template has been included.You naturally wouldn't want the complete path along with the file, so i'd recommend truncating down to the filename using PHP's
basename
function.Example code:
Two functions, one to set the global, one to call upon it.add_filter( 'template_include', 'var_template_include', 1000 ); function var_template_include( $t ){ $GLOBALS['current_theme_template'] = basename($t); return $t; } function get_current_template( $echo = false ) { if( !isset( $GLOBALS['current_theme_template'] ) ) return false; if( $echo ) echo $GLOBALS['current_theme_template']; else return $GLOBALS['current_theme_template']; }
You can then call upon
get_current_template
wherever you need it in the theme files, noting this naturally needs to occur after thetemplate_include
action has fired(you won't need to worry about this if the call is made inside a template file).For page templates there is
is_page_template()
, bearing in mind that will only help in the case of page templates(a far less catch all function).Information on functions used or referenced above:
-
- 2013-03-01
Entrefunçõesnativas WP como get_template_part () e onativo do PHPinclui amaneiramais confiável de ver os arquivos dotema usados ébuscarLista detodos os arquivosincluídose filtrar o quenãopertence aotema (outemas quando a combinaçãopaie filho é usada):
$included_files = get_included_files(); $stylesheet_dir = str_replace( '\\', '/', get_stylesheet_directory() ); $template_dir = str_replace( '\\', '/', get_template_directory() ); foreach ( $included_files as $key => $path ) { $path = str_replace( '\\', '/', $path ); if ( false === strpos( $path, $stylesheet_dir ) && false === strpos( $path, $template_dir ) ) unset( $included_files[$key] ); } var_dump( $included_files );
Between native WP functions like get_template_part() and PHP's native includes the most reliable way to see theme's files used is to fetch list of all included files and filter out whatever doesn't belong to theme (or themes when parent and child combination is used):
$included_files = get_included_files(); $stylesheet_dir = str_replace( '\\', '/', get_stylesheet_directory() ); $template_dir = str_replace( '\\', '/', get_template_directory() ); foreach ( $included_files as $key => $path ) { $path = str_replace( '\\', '/', $path ); if ( false === strpos( $path, $stylesheet_dir ) && false === strpos( $path, $template_dir ) ) unset( $included_files[$key] ); } var_dump( $included_files );
-
- 2012-09-08
uma adição (códigomais doce)para outras respostas aqui.
nome demodelo
Para apenas obter o atualmodelo depágina nome,use a seguinte linha.
is_page() AND print get_page_template_slug( get_queried_object_id() );
nome do arquivo
Quando você só querecoar onome do arquivo modelo atual ,vá com o seguinte
Edit: Aquiestá anova versão dopluginenvolvidoem uma classe. Elemostra onome do arquivo demodelo atual,bem como onome do arquivo de hierarquia demodelosnogancho de desligamentonaparteinferior dapágina.
O que oplugininforma:
- é omodelo dopai da criança/tema atual?
- Omodelo é servido apartir de uma subpasta? Se sim:informa onome
- onome do arquivo demodelo.
Apenas copie o seguinte códigoem um arquivoe nomeie-o
wpse10537_template_info.php
,enviá-lopara o diretório do seupluginse ativá-lo.<?php /** Plugin Name: (#10537) »kaiser« Get Template file name */ if ( ! class_exists( 'wpse10537_template_name' ) ) { add_action( 'plugins_loaded', array( 'wpse10537_template_name', 'init' ) ); class wpse10537_template_name { protected static $instance; public $stack; public static function init() { is_null( self :: $instance ) AND self :: $instance = new self; return self :: $instance; } public function __construct() { if ( is_admin() ) return; add_action( 'wp', array( $this, 'is_parent_template' ), 0 ); add_action( 'wp', array( $this, 'get_template_file' ) ); add_action( 'template_include', array( $this, 'get_template_name' ) ); add_action( 'shutdown', array( $this, 'get_template_name' ) ); } public function get_template_name( $file ) { if ( 'template_include' === current_filter() ) { $this->to_stack( "Template file" ,basename( $file ) ); return $file; } // Return static var on echo call outside of filter if ( current_user_can( 'manage_options' ) AND defined( 'WP_DEBUG' ) AND WP_DEBUG ) return print implode( " – ", $this->stack ); } public function get_template_file() { if ( ! is_post_type_hierarchical( get_post_type() ) ) return; $slug = get_page_template_slug( get_queried_object_id() ); if ( ! strstr( $slug, "/" ) ) return $this->to_stack( "Template", $slug ); $this->to_stack( "Subdirectory" ,strstr( $slug, "/", true ) ); $this->to_stack( "Template (in subdirectory)" ,str_replace( "/", "", strstr( $slug, "/" ) ) ); } public function is_parent_template() { if ( ! is_null( wp_get_theme()->parent ) ) return $this->to_stack( 'from parent theme' ); $this->to_stack( 'from current/child theme' ); } public function to_stack( $part, $item = '' ) { $this->stack[] = "{$part}: {$item}"; } } // END Class wpse10537_template_name } // endif;
Esteplugintambémpode serexecutado comomu-plugintambém.
Vocêpode simplesmente ligar
wpse10537_get_template_name()
em qualquerponto (porexemplo,ummodelo detema). Issoevita confiar onamespaceglobal.An addition (more sweet code) to other answers here.
Template Name
To just get the current page template name, use the following line.
is_page() AND print get_page_template_slug( get_queried_object_id() );
File Name
When you just want to echo the current template file name, go with the following
Edit: Here's the new version of the plugin wrapped up in a class. It shows both the current template file name, as well as the template hierarchy file name in the shutdown hook at the most bottom of the page.
What the plugin tells you:
- Is the template from the parent of child/current theme?
- Is the template served from a subfolder? If yes: Tells you the name
- The template file name.
Just copy the following code into a file and name it
wpse10537_template_info.php
, upload it to your plugins directory and activate it.<?php /** Plugin Name: (#10537) »kaiser« Get Template file name */ if ( ! class_exists( 'wpse10537_template_name' ) ) { add_action( 'plugins_loaded', array( 'wpse10537_template_name', 'init' ) ); class wpse10537_template_name { protected static $instance; public $stack; public static function init() { is_null( self :: $instance ) AND self :: $instance = new self; return self :: $instance; } public function __construct() { if ( is_admin() ) return; add_action( 'wp', array( $this, 'is_parent_template' ), 0 ); add_action( 'wp', array( $this, 'get_template_file' ) ); add_action( 'template_include', array( $this, 'get_template_name' ) ); add_action( 'shutdown', array( $this, 'get_template_name' ) ); } public function get_template_name( $file ) { if ( 'template_include' === current_filter() ) { $this->to_stack( "Template file" ,basename( $file ) ); return $file; } // Return static var on echo call outside of filter if ( current_user_can( 'manage_options' ) AND defined( 'WP_DEBUG' ) AND WP_DEBUG ) return print implode( " – ", $this->stack ); } public function get_template_file() { if ( ! is_post_type_hierarchical( get_post_type() ) ) return; $slug = get_page_template_slug( get_queried_object_id() ); if ( ! strstr( $slug, "/" ) ) return $this->to_stack( "Template", $slug ); $this->to_stack( "Subdirectory" ,strstr( $slug, "/", true ) ); $this->to_stack( "Template (in subdirectory)" ,str_replace( "/", "", strstr( $slug, "/" ) ) ); } public function is_parent_template() { if ( ! is_null( wp_get_theme()->parent ) ) return $this->to_stack( 'from parent theme' ); $this->to_stack( 'from current/child theme' ); } public function to_stack( $part, $item = '' ) { $this->stack[] = "{$part}: {$item}"; } } // END Class wpse10537_template_name } // endif;
This plugin can run as MU-Plugin too.
You can then simply call
wpse10537_get_template_name()
at any point (in for example a theme template). This avoids cluttering the global namespace.-
`Template_redirect`nãoestápassando qualquer coisa,eu acho que vocêestá confuso com`template_include`.Tambémeu verifiquei se dentro dofiltroem vez de se o Varestatísticopreenchido.Se algum código decidirexecutar oganchotempo adicional,pode destruir as coisas.`template_redirect` is not passing anything, I think you are confusing with `template_include`. Also I'd check if inside the filter instead of if static var filled. If some code decides to run hook additional time it can wreck things.
- 1
- 2012-09-15
- Rarst
-
@Rarstfeito/fixo.Obrigadopela dicae apontando onome dofiltro.@Rarst Done/Fixed. Thanks for the hint and pointing out the filter name.
- 0
- 2012-09-15
- kaiser
-
- 2011-02-26
Onome domodelo é armazenadonatabela PostMeta,entãotudo que vocêprecisafazer é colocarissoem algum lugarno seu loop:
$template = get_post_meta( $post->ID, '_wp_page_template', true ); echo "Template: " . $template;
The template name is stored in the postmeta table, so all you need to do is put this somewhere in your loop:
$template = get_post_meta( $post->ID, '_wp_page_template', true ); echo "Template: " . $template;
-
Sim,eu sei disso,mas oproblema é quefunciona apenas quando umapáginatem ummodelo definido.A coisa legal sobre o código queeupostei é queele vai dizer se apágina atualestá usando `front-page.php`,`index.php`,`single.php`,`page.php` ou qualquer outro arquivo.Seu códigoexibe onome domodelo apenasparapáginas com omodelo depáginapersonalizado.Yes, I know about this, but the problem is that it works only when a page has a set template. The cool thing about the code I posted is that it will tell you if current page is using `front-page.php`, `index.php`, `single.php`, `page.php` or any other file. Your code displays template name only for pages with custom page template.
- 2
- 2011-02-26
- chodorowicz
-
Ah,desculpe -meumal-entendido da suapergunta.ah, sorry - my misunderstanding of your question.
- 0
- 2011-02-26
- Simon Blackbourn
-
@Simonblackbourn é ajudapara aminhaexigência.Obrigado.@SimonBlackbourn It's help for my requirement. Thanks.
- 0
- 2013-10-08
- KarSho
-
- 2013-05-01
Issonão abordatoda apergunta da OP,mas o código abaixo é certamentemaiselegante do queexpressões regularese analisando opróprio arquivo demodelo.
Se vocêestiverem umapágina queesteja usando ummodelo depágina,e deseja obter onome domodelo depágina (ou seja: onome legívelpor humanos que você definiunos comentáriosnaparte superior do arquivo PHP demodelo),Vocêpode usarestepequenonugget:
if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){ $templates = wp_get_theme()->get_page_templates(); $template_name = $templates[$current_template]; }
Eu queria obter onome domodeloporqueestava realmente doente dosnomes de classebobos-long-bunda que o WordPressintegrado
body_class
cria quando vocêestá usando ummodelo. Felizmente,há umgancho defiltronofinal dessafunçãoparapermitir que você anexe seusprópriosnomes de classes. Aquiestá omeufiltro. Espero que alguém ache útil:add_filter( 'body_class', 'gs_body_classes', 10, 2 ); function gs_body_classes( $classes, $class ){ if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){ $templates = wp_get_theme()->get_page_templates(); $template_name = str_replace( " ", "-", strtolower( $templates[$current_template] ) ); $classes[] = $template_name; } return $classes; }
Estefiltro vai levar o que vocênomeou seumodelo depágina,substituirespaçosportraçose tornartudominúsculo,entãoparece quetodas as outras classes WordPress.
This doesn't address all of the OP's question, but the code below is certainly more elegant than regular expressions and parsing the template file itself.
If you're on a Page that is using a Page Template, and you want to get the page template's Name (ie: the human-readable name that you defined in the comments at the top of your template PHP file), you can use this little nugget:
if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){ $templates = wp_get_theme()->get_page_templates(); $template_name = $templates[$current_template]; }
I wanted to get the template name because I was really sick of the silly-long-ass class names that the built-in WordPress
body_class
function creates when you're using a template. Luckily there's a filter hook at the very end of that function to let you append your own class names as well. Here's my filter. Hope someone finds it useful:add_filter( 'body_class', 'gs_body_classes', 10, 2 ); function gs_body_classes( $classes, $class ){ if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){ $templates = wp_get_theme()->get_page_templates(); $template_name = str_replace( " ", "-", strtolower( $templates[$current_template] ) ); $classes[] = $template_name; } return $classes; }
This filter will take whatever you named your page template, replace spaces with dashes and make everything lower case so it looks like all the other WordPress classes.
-
- 2011-02-26
Há umproblema com o
preg_match_all
linha.Tenteissoem vez disso:preg_match_all("/Template Name:(.*)\n/siU",$template_contents,$template_name);
Além disso,vocêpode usar
if (!is_admin()) { .... }
paraexecutar as coisas apenasnofrontend.There's an issue with the
preg_match_all
line. Try this instead:preg_match_all("/Template Name:(.*)\n/siU",$template_contents,$template_name);
Also, you can use
if (!is_admin()) { .... }
to run things on the frontend only.-
Obrigadopela sugestão,elesnão resolvem oproblema,maselesme dirigirampara soluções.Acontece que a WP,aogerar a lista demodelos,parecemesmopara "funções.php"encontra o "nome"/modelo: (. *) \ N/siu ""e,portanto,trata o arquivo `Functions.php` como arquivo demodelo.Eu acho queisso ébug do WP,elenão devenem olharparaeste arquivo.A solução: Mova o arquivopara o subdiretório.Thanks for suggestion, they don't solve the problem, but they kinda directed me into solutions. It turns out that WP, while generating templates list, is looking even into `functions.php` finds the `"/Template Name:(.*)\n/siU"` and thus treats the `functions.php` as template file. I think this is WP bug, it shouldn't even look at this file. The solution: move the file into subdirectory.
- 0
- 2011-02-26
- chodorowicz
-
@Chodorowicz: Issonão é umbugno WP,é umbugem suafunção.@chodorowicz: That's not a bug in WP, it's a bug in your function.
- 0
- 2011-02-26
- wyrfel
-
Então,basicamente,o WPproíbe você colocar string "nome domodelo:" (mesmoem comentários)no arquivo `Functions.php`.Paramim,pessoalmente,isso é umbug,(pequeno,mas de qualquermaneira),masessa é a discussão,suponho.Eu acho que vocênãopode dizer que afunçãoem si ébuggy.So basically WP forbids you to put string "Template Name:" (even in comment) in `functions.php` file. For me, personally, that's a bug, (small, but anyway) but that's the up to discussion, I suppose. I think you cannot say that the function itself is buggy.
- 0
- 2011-02-26
- chodorowicz
-
WPnãome proíba defazer qualquer coisa.Mas o WPtambémnãopromete que vocêpode circular sobre um debug_backtrace ()para descobrir qual arquivo demodelo vocêestá usando.Sóporque você achouem umfórum de suporte WP,não significa que seja um código oficialmente suportado.Como vocêpode ver,suafunçãoexplicitaexplicitamente rodapé.php.Vocêtambémpode adicionar outra condição queexcluafunções.php.BTW: Suafunçãonãoprocura "nome domodelo" dentro de cada um dos arquivos,seu loopterminoumuito antes disso.WP doesn't forbid you to do anything. But WP also doesn't promise you that you can loop over a debug_backtrace() to find out what template file you're using. Just because you found it on a WP support forum doesn't mean it's officially supported code. As you may see, your function explicitly expludes footer.php. You may as well add another condition that excludes functions.php. BTW: your function doesn't look for `Template Name` within each of the files, your loop has ended long before that.
- 0
- 2011-02-27
- wyrfel
-
Oproblemanãofoi com "Debug_BackTrace ()" - Euposso removertodo o códigoe simplesmente deixe o "nome/modelopreg_match_all ("/modelo ...,oumesmo apenas "nome domodelo:`e wptrataentão "asfunções.Php` como arquivo demodelo,mas obrigadopor comentários -este é umproblematão único que,como você diz,não éjusto dizer que é umbug. Solução T31os é limpae resolvetoda a questão. Cumprimenta.The problem wasn't with `debug_backtrace()` - I can remove all the code and just leave `preg_match_all("/Template Name...`, or even just `// Template Name:` and WP treats then `functions.php` as template file, but thanks for comments - this is such a unique problem that, as you say, it's not fair to say it's a bug. t31os solution is clean and solves the whole issue. Greets.
- 0
- 2011-02-27
- chodorowicz
-
- 2017-09-15
Joguejunto com:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Escritoem:
Como você descobre qualpágina demodeloestá servindo apágina atual?
Se
admin-bar stuff
o caminhoestámostrandonaparte superior ou qualquer outro arquivo,altere onome do arquivotemplate-loader.php
nesta linha de códigopara: Filname que vocêprecisapara quebrar.Se vocêprecisar dissonabarra de administração, use aprioticidade correta strong> (mais cedo) parafazer shure Nenhum arquivo éinseridonofinal desta lista. Porexemplo:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
Prioridade
-5
Faça o shure carregaprimeiro. A chave étornaresta linhanomomento certo.Não retorna o arquivo "atual",mastoda a correnteem usopara a carga atual dapágina. talvez "cortado" com alguma lógica dessaideia .
O
get_included_files()
"Última" Atecla é o último arquivoincluído registrado,provavelmente o último arquivo demodelo/-part usadono rodapépelo widget dabarra lateral ou algo. Proapta,Cos Mutiple Incluído Arquivosnão registram/preenchenovamenteem get_included_files ().Caso contrário, Aintenção deve ser clarapara hackearesteproblema . Não há como um arquivoincluídopara se reportar comoincluído,até quetenha sidoincluído . Então é razoavelmente atrasadopara usar o cenário.
amaiorparte do "tempo" que você gostaria de:
$template = get_current_loaded_template(); if($template == 'single-product.php') add_filter('the_title' .... if($template == 'format-gallery.php') add_action('post_thumbnail' ....
masissonão épossível se omodelofor carregadofora dométodo donúcleo do WordPress de
get_template_part
. Projetar suasnecessidadesem vez disso! Talvezloop_start()
,in_the_loop()
eadd_action('the_post')
tem a solução desejada,para alterar dados dependendo domodelo que vai Carreguepara cadaentrada dentro de um loop.Play along with:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Written at:
How do you find out which template page is serving the current page?
if
admin-bar stuff
path is showing at the top, or any other file, change the filenametemplate-loader.php
in this line of code to: whatever filname you need to break from.if you need this in the admin bar, use the right priotity (earliest) to make shure no files are entered at the end of this list. For example:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
priority
-5
make shure it loads first. The key is to render this line at the right moment.It does not returning the "current" template-file, but all the current in use for the current page-load. Maybe "cut out" with some logic from that idea.
The
get_included_files()
"last" key is the last registered included file, propably the last template-file/ -part used in the footer by sidebar widget or something. Propably, cos mutiple included files does not re-register/ populates again in get_included_files().Otherwise, the intension must be clear to hack this problem. There is no way for a included file to report itself as included, until it has been included. Then its propably to late to use the scenario.
Most of the "time" you would like:
$template = get_current_loaded_template(); if($template == 'single-product.php') add_filter('the_title' .... if($template == 'format-gallery.php') add_action('post_thumbnail' ....
But thats not possible if the template is loaded outside Wordpress core method of
get_template_part
. Re-design your needs instead! Maybeloop_start()
,in_the_loop()
andadd_action('the_post')
has the solution you want, to alter data depending of template thats gonna load for each entry within a loop. -
Euencontreiissoparaexibir onome atual do arquivo usadonomodelo:
Fonte: Obternome domodelo depáginaem umapágina
Funcionamuitobem,exceto quenobackend,na caixa de seleção domodelo,obtenhoestaentradaextrafeia:
is_frontend()
-talvezisso resolva oproblema?