Tag condițional pentru a verifica dacă se folosește 'page.php'?

17 iun. 2014, 00:40:54
Vizualizări: 17.5K
Voturi: 11

Încerc să verific dacă șablonul page.php este utilizat sau nu. Am încercat is_page_template( 'page.php' ) dar nu funcționează.

Nu pot folosi nici is_page() pentru că vreau să fac ceva doar când este folosit page.php, și nu când sunt folosite alte șabloane personalizate pentru Pagini.

Vă rog să-mi spuneți cum să rezolv această problemă, mulțumesc!

Edit: Trebuia să menționez mai devreme că am un fișier numit common-options.php care este inclus în aproape toate șabloanele (cum ar fi index.php, page.php, single.php și page_blog.php), în acest fișier încerc să fac verificarea cu următorul cod:

if ( is_page_template( 'page.php' ) ) {
    echo "succes!";
}

Dar nu funcționează când deschid o pagină care folosește "Șablonul implicit".

4
Comentarii

is_page_template() este funcția corectă, dar spui că "nu funcționează". Verifici în interiorul buclei?

jdm2112 jdm2112
17 iun. 2014 01:15:00

Bună, o verific într-un fișier pe care îl includ (folosind 'include()') în partea de sus a page.php și a altor fișiere. Te rog să vezi ediția întrebării mele.

user1981248 user1981248
17 iun. 2014 03:40:49

Din păcate, nu pot să-ți răspund la întrebare pe baza ediției tale. Sunt prea multe posibilități fără a vedea mai mult din codul tău. Dacă testezi condiția în interiorul buclei, is_page_template nu va funcționa. Recomandarea mea este să afli ce șablon este folosit și apoi să identifici de ce. Această funcție va afișa fișierul șablon curent pe fiecare pagină pentru un administrator autentificat. http://pastebin.com/wkNv9Eug. Pune asta în functions.php și reîncarcă pagina. Atâta timp cât tema ta apelează wp_head(), ar trebui să vezi șablonul în partea de sus a fiecărei pagini când ești autentificat.

jdm2112 jdm2112
17 iun. 2014 05:58:14

Cea mai importantă întrebare aici este: verifici în interiorul buclei? Apelezi the_post în fișierul tău de șablon înainte de a apela is_page_template? (is_page_template( 'page.php' nu va funcționa în niciun caz, dar aceasta rămâne o întrebare importantă pentru a răspunde la întrebarea ta inițială)

engelen engelen
17 iun. 2014 10:47:06
Toate răspunsurile la întrebare 7
5
12

Am întâmpinat și eu aceeași problemă, iar soluția mea a fost următorul cod:

if(basename(get_page_template()) === 'page.php'){

}

basename(get_page_template()) returnează numele fișierului șablonului de pagină (conform https://codex.wordpress.org/Function_Reference/get_page_template) și apoi verificăm dacă este egal cu 'page.php'

20 sept. 2016 18:15:06
Comentarii

Poți să elaborezi mai mult despre cum va funcționa acest cod?

Ethan Rævan Ethan Rævan
20 sept. 2016 18:29:21

Sunt de acord, aceasta este o soluție solidă dar ar putea fi extinsă. +1

Howdy_McGee Howdy_McGee
20 sept. 2016 19:48:26

Cel puțin pentru mine, acest lucru returnează true pentru orice pagină, chiar dacă folosesc un șablon personalizat (diferit de page.php)

Jabel Márquez Jabel Márquez
26 sept. 2017 06:20:44

Acest lucru este minunat pentru că funcționează chiar și dacă pagina folosește șablonul său implicit.

rinogo rinogo
10 aug. 2018 02:10:01

Funcționează perfect pentru mine în functions.php cu hook-ul wp enqueue. is_page_template( 'page.php' ) nu s-a declanșat... Mă întreb dacă cineva ar găsi o explicație...

Friedrich Siever Friedrich Siever
28 aug. 2018 23:41:11
2

Aveți două funcții utile: is_page() și is_page_template().

Funcția is_page() va returna true când vă aflați pe o pagină, iar funcția is_page_template() va returna false dacă postarea curentă (care poate fi o pagină) nu utilizează un șablon personalizat.

Deci, trebuie doar să utilizați ambele funcții împreună:

if ( is_page() && !is_page_template() ) {
  // codul dvs.
}
24 sept. 2018 08:53:00
Comentarii

Cred că acesta este cel mai solid răspuns.

Hannah Smith Hannah Smith
17 nov. 2020 18:42:14

Încă funcționează perfect la această dată. Mulțumesc!

rwzdoorn rwzdoorn
12 ian. 2021 18:12:05
2

Întrebare veche, dar una interesantă.

În general, nu este obișnuit să verifici template-ul în WordPress. Template-ul este rezultatul rulării interogării principale și stabilirii contextului cererii.

Dacă este necesar, aș seta probabil un indicator la începutul page.php, cum ar fi declararea unei constante pentru acesta, pentru a avea propriul context.

Cu toate acestea, mă face să cred că orice logică care necesită o astfel de acțiune ar trebui reconsiderată pentru a se alinia cu mecanismele și condiționalele mai comune.

20 sept. 2016 19:01:52
Comentarii

+1 Orice cod care are nevoie de această condiție ar putea fi probabil plasat necondiționat în page.php

Andy Macaulay-Brook Andy Macaulay-Brook
20 sept. 2016 20:16:11

Nu sunt de acord. În cazul meu, încerc să încărc un script JS doar în page.php implicit, din interiorul functions.php. De ce să forțez utilizatorul să îl încarce pe orice altă pagină dacă nu are nevoie? Cred că există cazuri de utilizare pentru asta.

Jordan Carter Jordan Carter
26 iul. 2018 21:55:53
1

De fapt, este foarte simplu. Doar folosește:

is_page_template()

Dacă returnează true, atunci page.php nu este folosit și invers :) :)

2 apr. 2018 09:07:46
Comentarii

Dar nu ar returna false pe paginile de postări, totuși?

Jordan Carter Jordan Carter
26 iul. 2018 21:57:01
0
$bulkitnt_custom_page_control = is_page_template( 'custom-page.php' );

    if( $bulkitnt_custom_page_control != true ){
        do_action('bulkitnt_header_action');
    }
29 iul. 2018 13:22:27
2

Acest lucru funcționează pentru mine în searchbar.php

basename(get_page_template()) === ( 'page.php' )

Acesta este codul meu complet:

if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :

    $args = cp_get_dropdown_categories_search_args( 'bar' );
27 iul. 2020 18:11:47
Comentarii

Cod complet

<?php if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :

$args = cp_get_dropdown_categories_search_args( 'bar' ); ?>

Robin Robin
27 iul. 2020 18:15:51

Ar trebui să adaugi codul tău în răspuns, nu ca un comentariu

mozboz mozboz
27 iul. 2020 18:26:58
2
-2

Folosește un array gol în loc de 'page.php' exemplu: is_page_template(array(''));

1 feb. 2019 15:14:22
Comentarii

Te rugăm să [editezi] răspunsul tău și să adaugi o explicație: de ce ar putea rezolva problema?

fuxia fuxia
1 feb. 2019 15:48:36

Ai putea de asemenea să oferi un exemplu.

RiddleMeThis RiddleMeThis
1 feb. 2019 16:06:13