2016-03-28 4 views
1

ich den folgenden Code haben, der Text in einem Header platziert, basierend auf welchem ​​Teil der Website sind Sie an:Überprüfen Sie, ob Wordpress-Archiv Seite mit allen Beiträgen in Konzept

<h1 class="heading"> 
    <?php 
     $posttype = get_post_type(); 
     switch ($posttype) { 
      case "tekenplannen": 
       echo "Tekenplannen - " . $details[ 'title' ]; 
       break; 
      case "vacatures": 
       //check if we are on the archive page 
       if (is_archive()) { 
        echo "Open vacatures"; 
       } else { 
        echo "Vacature - " . $details[ 'title' ]; 
       } 
       break; 
      case "object": 
       if (is_archive()) { 
        echo "Toonzaal"; 
       } else { 
        echo $details[ 'title' ]; 
       } 
       break; 
      case "nieuws": 
       //check if we are on the archive page 
       if (is_archive()) { 
        echo "Nieuws"; 
       } else { 
        echo $details[ 'title' ]; 
       } 
       break; 
      default: 
       echo $details[ 'title' ]; 
       break; 
      } 
     ?> 
</h1> 

Dieser Code völlig in Ordnung, so lange funktioniert, wie Meine Archivseite hat einen Post veröffentlicht. Stellen Sie sich jetzt vor, dass zum Beispiel mein "vacatures" benutzerdefinierte Post-Typ 4 veröffentlichte Posts hat, mein Header-Titel wird "Vacatures" enthalten, was in Ordnung ist. Stellen Sie sich jetzt vor, dass ich alle meine 4 Posts verstecken möchte, damit sie im "Entwurf" -Modus platziert werden. Wenn ich dann meine Archivseite erneut durchsuche, enthält der Titel den Text "Archive". Warum wird dies nicht von der is_archive() Funktion abgefangen? Wie bekomme ich das?

Vielen Dank im Voraus

Antwort

0

@ Dennis, wenn Sie in benutzerdefinierte Post Typ, für Archivseite ausgeführt wird, das bedingte Tag Ihre Inhalte werden angezeigt zu machen, Sie is_post_type_archive verwenden müssen.

is_post_type_archive($post_types) 
+0

Vielen Dank für Ihre Antwort, ich habe meinen Code geändert, das Ergebnis ist immer noch das gleiche obwohl. Es zeigt immer noch "Archives", wenn alle meine Posts im Konzept sind – Dennis

+0

Front-End nur für "veröffentlichen" Post-Status (außer Single-Post-Vorschau), es sei denn, Sie haken die Abfrage Post-Status in Entwurf. Im Standard wird 'get_post_type' den Wert false https://developer.wordpress.org/reference/functions/get_post_type/ zurückgeben, wenn post null ist. Entsprechend Ihrem Switch-Fall wird null auf ** default ** gesetzt. – Jevuska