Tag condițional pentru a verifica dacă se folosește 'page.php'?
Î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".

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'

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

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

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

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.
}

Î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.

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

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' );

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' ); ?>
