Cum să utilizezi if (is_page_template('')) în WordPress

24 ian. 2017, 19:35:17
Vizualizări: 17.7K
Voturi: 0

Folosesc următorul cod în functions.php. Vreau să exclud toate paginile care folosesc template-ul single.php.

function cat_menu() {

 // Verifică dacă pagina nu folosește template-ul single.php
 if (!is_page_template('single.php')) {


$cur_cat = get_query_var('cat');

 $new_cats = wp_list_categories('echo=false&child_of=' . $cur_cat .'&depth=1&title_li=&&show_count=0&hide_empty=1');
            echo '<ul>' . $new_cats . '</ul>';
}}
  // Adaugă acțiunea după header în Genesis
  add_action ( 'genesis_after_header', 'cat_menu' ); 

Dar văd rezultatul și pe paginile care folosesc single.php.

Poate cineva să mă ajute cu asta?

0
Toate răspunsurile la întrebare 4
0

is_page_template() verifică șabloanele de tip post specificate de temă folosind

/**
 * Nume Șablon: Șablonul Meu
 */

la începutul fișierului șablon. Nu orice fișier șablon arbitrar. Pentru aceasta, poți verifica răspunsurile de la Obține numele fișierului șablon curent. Poți prelua codul din răspunsul acceptat acolo (get_current_template()) pentru a face ceva când single.php === get_current_template().

24 ian. 2017 20:23:18
1

Trebuie să utilizați următoarea funcție:

is_singular()

Funcția is_singular() verifică dacă pagina curentă este single.php.

Referință funcție

24 ian. 2017 21:19:35
Comentarii

is_singular() nu garantează 100% că single.php a fost încărcat, deoarece alte șabloane din ierarhie ar putea fi încărcate înaintea lui.

swissspidy swissspidy
25 ian. 2017 15:05:18
0

Întotdeauna mi se pare ciudat cât de mult timp îi ia discuțiilor de pe WPSE să primească răspunsuri precise, iată un exemplu de bază despre cum să-l folosești de pe StackOverflow:

// dacă nu este un șablon de pagină specific
<?php if (!is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Conținut
<?php endif; ?>

// dacă este un șablon de pagină specific
<?php if (is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Conținut
<?php endif; ?>

Referință: https://stackoverflow.com/questions/58531957/if-is-page-template-not-working-in-header-php

17 aug. 2023 13:34:41
1
-1

get_page_template_slug() - Returnează doar șablonul paginii

 global $post;    
    $template = get_page_template_slug($post->ID);         
    if ($template == 'page-template.php') {....}

Probabil merită verificat mai ușor

if(is_single()){....}
24 ian. 2017 20:35:06
Comentarii

Aceasta este aceeași problemă ca și în cazul is_page_template(). get_page_template_slug() verifică doar șabloanele personalizate pentru postări (cele cu antetele /* Template Name: ... */). De asemenea, is_single() nu garantează 100% că single.php a fost încărcat, deoarece alte șabloane din ierarhie ar putea fi încărcate înaintea lui.

swissspidy swissspidy
25 ian. 2017 15:05:07