is_page( ) Custom Page Type

  • Hallo Wordpress Gemeinde,
    ich habe einen Custom Page Type eingerichtet funktioniert auch so weit einwandfrei. Um das entsprechende Template auszuliefern möchte ich mit is_page() prüfen welche Seite aufgerufen wurde und das entsprechende Template ausliefern. Leider klappt es nicht mit dem Code, es wird nur die "else" ausgegeben egal welche Seite ich aufrufe.

    Ist bei Custom Page Type anders vorzugehen? Leider hat meine Suche im Forum und in der Code Refrence nichts eregeben.

    Code
    if ( is_page( 'dashboard' ) ):
        echo 'dashboard';
    elseif ( is_page( 'submit' ) ):
        echo 'submit';
    else:
        echo 'mach was anderes';
    endif;

    Vielen Dank VG Peter G

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Vermutlich hast Du einen "Custom Post Type" erstellt, siehe auch Dokumentation Post Typen.

    Die im Code genutzte is_page() Abfrage ist für einzelne Seiten (die den Post Type 'page' haben), siehe auch Dokumentation is_page().

    Die Template-Datei für den eigenen Post Type hinterlegt man im Child Theme. Welche Datei von WordPress in welcher Reihenfolge gesucht bzw. genutzt wird siehe auch Template Hierarchy Dokumentation bzw. Custom Post Type Template Files Dokumentation.

    Für verschiedene Template-Dateien für die Einzelausgabe in einem Custom Post Type muss dieser [FONT=Courier New]page-attributes[/FONT] Support beim Registrieren haben, dann werden auch ggf. vorhandene weitere Templates für den Custom Post Type ermittelt und beim Bearbeiten des Einzelbeitrags zur Auswahl angezeigt.

  • Hallo, vielen Dank für die schnelle Antwort. Ja richtig, ich habe einen custom post type namens mtx-site. Den Inhalt für die Seiten zeige ich mit der single-mtx-site.php an. Soweit so gut. Funktioniert wie gewollt. Nun habe ich diverses Seiten unter dem custom pots type angelegt und möchte für diese verschiedene Templates laden.

    Ich habe mir das so gedacht:

    Code
    if ( is_page( 'dashboard' ) ):
        get_template_part( 'templates/mtx-site', 'dashboard' );
    elseif ( is_page( 'submit' ) ):
        get_template_part( 'templates/mtx-site', 'submit' );
    else:
        get_template_part( 'templates/mtx-site', 'page' );
    endif;

    Wie ich nun weiß funktioniert es mit is_page() leider nicht. Welche Möglichkeiten gibt es um das zu lösen.

    VG Peter G

  • Welche Möglichkeiten gibt es um das zu lösen.


    Der von WordPress dafür vorgesehene Weg ist hier beschrieben:

    Für verschiedene Template-Dateien für die Einzelausgabe in einem Custom Post Type muss dieser [FONT=Courier New]page-attributes[/FONT] Support beim Registrieren haben, dann werden auch ggf. vorhandene weitere Templates für den Custom Post Type ermittelt und beim Bearbeiten des Einzelbeitrags zur Auswahl angezeigt.


    Damit ist kein weiterer Unterscheidungscode nötig, Beispiel:

    PHP
    <?php
    /*
    Template Name: MTX Dashboard
    Template Post Type: mtx-site
    */


    Dateiname beliebig z.B. [FONT=Courier New]mtx-dashboard.php[/FONT], diese Datei wird dann bei entspr. Auswahl von MTX Dashboard im Editor anstelle der [FONT=Courier New]single-mtx-site.php[/FONT] genutzt.

    6 Mal editiert, zuletzt von b3317133 (5. Januar 2022 um 23:11)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!