it-swarm.com.de

is_page_template funktioniert nicht wie erwartet

Ich versuche, je nach Art der Seite, auf der sich der Benutzer befindet, unterschiedliche Header bereitzustellen. Das ist mein Code.

<!-- IF HOME -->
        <?php if ( is_front_page() && is_home() ) : ?>
        <?php get_template_part( 'template-parts/headers/home-header' ); ?> 

        <!-- IF TEMPLATES -->

        <?php elseif ( is_page_template('archive-mobile_photo.php') ) : ?>
        <?php get_template_part( 'template-parts/headers/home-header' ); ?> 

        <!-- IF  POST -->
        <?php else : ?>
        <?php get_template_part( 'template-parts/headers/Zine-header' ); ?>     

        <?php endif; ?>

Was seltsam ist, ist, dass die Homepage und die Postseiten gut funktionieren, aber die Überprüfung mit is_page_template() nicht funktioniert. Ich habe das Abfrageüberwachungs-Plugin und es bestätigt, dass die Seite die Vorlage archive-mobile_photo.php ist.

Ich bin ziemlich neu in WordPress und bin total ratlos.

1
Garrett Scafani

Es sieht so aus, als ob Sie überprüfen, ob Sie sich mit dieser Zeile im Archiv für mobile_photo Posts befinden:

<?php elseif ( is_page_template( 'archive-mobile_photo.php' ) ) : ?>

Wenn dies tatsächlich der Fall ist, verwenden Sie stattdessen is_post_type_archive( $post_types ) :

<?php elseif ( is_post_type_archive( 'mobile_photo' ) ) : ?>
1
Dave Romsey

Anstatt die Bedingungen zum Laden von Headern als Vorlagenteile zu verwenden, ist es besser, die in get_header() integrierte Funktionalität zu verwenden, wenn Sie sie für jede Seitenvorlage aufrufen. Diese Dateien befinden sich im Stammverzeichnis des Themenordners.

Sie würden Ihre beiden Dateien header-home.php und header-Zine.php benennen und in der Seitenvorlage aufrufen mit:

get_header('home');

und

get_header('Zine');

Wenn Sie die Bedingungen für eine komplexere Seite benötigen, können Sie die Seite dennoch überprüfen und die entsprechende Datei basierend auf Ihren Kriterien laden. Es gibt auch ein Beispiel davon im Codex.

Ich bin nicht sicher, was der Unterschied zwischen get_header() und get_template_part() ist, aber wenn nichts anderes, denke ich, ist es besser lesbar und folgt dem WordPress-Standard.

0
Jeremy Ross