it-swarm.com.de

Wie erhalte ich den benutzerdefinierten Beitragstyp von einer Archivseite?

Auf meiner Website habe ich drei benutzerdefinierte Beitragstypen: Skripte, Szenen und Plugins. Wenn Sie die Archivseite eines einzelnen Beitragstyps besuchen (z. B. unter mysite.com/plugins), werden alle Beiträge dieses Typs korrekt angezeigt.

Wie kann ich in archive.php herausfinden, welchen benutzerdefinierten Beitragstyp der Benutzer gerade betrachtet?

Ich habe folgendes versucht:

<?php 
    global $post; 
    $postTypeLabels = get_post_type_labels(get_post_type_object($post)); 
    echo var_export($postTypeLabels); 
?>

Aber ich bekomme das:

Post name is stdClass::__set_state(
  array( 'name' => 'Posts', 
    'singular_name' => 'Post', 
    'add_new' => 'Add New', 
    'add_new_item' => 'Add New Post', 
    'edit_item' => 'Edit Post', 
    'new_item' => 'New Post', 
    'view_item' => 'View Post', 
    'search_items' => 'Search Posts', 
    'not_found' => 'No posts found.', 
    'not_found_in_trash' => 'No posts found in Trash.', 
    'parent_item_colon' => NULL, 
    'all_items' => 'All Posts', 
    'menu_name' => 'Posts', 
    'name_admin_bar' => NULL, 
  )
)

Ich vermute, dass der $ post nicht korrekt ist, da ich auf einer Archivseite bin.

P.S. Ich weiß, dass ich archive-plugins.php für das Plugins-Archiv erstellen kann. Leider habe ich ein Theme installiert, das das meines Wissens irgendwie verhindert. Das ist also keine Option.

4
pek

Hierfür gibt es verschiedene Möglichkeiten. Stellen:

var_dump($wp_query->query,get_queried_object()); die;

In Ihrem archive.php sollten Sie zwei dieser Möglichkeiten sehen.

$wp_query->query enthält eine post_type-Komponente für benutzerdefinierte Beitragstypen. Für post Beitragstypen ist das nicht möglich. get_queried_object gibt eine ganze Reihe von Daten für benutzerdefinierte Beitragstypen zurück, aber null für post Beitragstypen.

Es gibt auch einige verwandte Template-Tags , die helfen könnten. is_post_type_archive fällt mir ein.

Dazwischen sollten Sie die Informationen haben, die Sie benötigen, um die von Ihnen benötigte Logik zusammenzustellen. Aus Ihrer Frage ist nicht klar, wie das Endergebnis aussehen soll, daher kann ich nicht wirklich viel schreiben.

Da Sie speziell archive.php genannt haben, habe ich das getestet. Sie benötigen möglicherweise einen anderen Code für eine andere Vorlage, insbesondere für get_queried_object , die je nach Kontext sehr unterschiedliche Informationen zurückgibt.

7
s_ha_dum

Hier ist die gewünschte Funktion:

/**
 * Get the current archive post type name (e.g: post, page, product).
 *
 * @return String|Boolean  The archive post type name or false if not in an archive page.
 */
function get_archive_post_type() {
    return is_archive() ? get_queried_object()->name : false;
}
1
Nabil Kadimi
die(var_dump(get_taxonomy(get_queried_object()->taxonomy)->object_type));

Ich denke, das ist die Antwort auf Ihre Frage.

Viel Spaß beim Programmieren !!!

0

Keine andere gute Option als das Erstellen von Vorlagen!

Oder Einfügen einer Vorlagendatei, wenn auf das Archiv mit dem benutzerdefinierten Beitragstyp (entsprechend seiner URL) zugegriffen wird.

Weitere Informationen finden Sie unter den folgenden Links:

http://codex.wordpress.org/Function_Reference/load_template

WordPress - Laden Sie eine Vorlage basierend auf der URI

http://www.mihaivalentin.com/wordpress-tutorial-load-the-template-you-want-with-template_redirect/

0
revo