get_queried_object () gibt null für das Post-Date-Archiv zurück

get_queried_object() gibt null für is_date() Archive ( is_date() ) und die is_home() ) zurück. Ist das beabsichtigt oder nur ein Versehen?

Ich habe einen Wrapper um get_queried_object () geschrieben, um den Titel der aktuellen Seite zu erhalten, unabhängig davon, um was für einen Seitentyp es sich handelt, um sie in einem Thema zu verwenden. Ich erkannte schnell, dass ich anstelle von get_query_object() nur die wichtigen Bits von wp_title() , aber vorher stieß ich auf ein interessantes Problem.

Es scheint, dass get_queried_object() und seine Root-function WP_Query->get_queried_object() null für einige Auflistungstypen zurückgeben, einschließlich der von index.php ( is_home() ) ausgegebenen primären is_home() und is_home() nach Datum ( is_home() is_date() )

Ich habe das getestet, indem ich das folgende Snippet in eine Reihe von Template-Dateien an mehreren Stellen get_header() , immer nach get_header() und vor the_post() :

 

Dies funktioniert perfekt für Kategoriearchive, Tag-Archive, benutzerdefinierte Taxonomiearchive und benutzerdefinierte Post-Typ-Archive. get_queried_object() gibt das Abfrageobjekt zurück, mit dem ein get_queried_object() und andere nützliche Informationen extrahiert werden können.

Es schlägt jedoch in archive.php für Standard-Post-Datum-Archive und index.php für die normale Blog-Posts-Homepage-Listenansicht fehl.

WP_Query->get_queried_object() die Quelle von WP_Query->get_queried_object() ergibt sich etwas nicht Überraschendes: Es gibt keine Überprüfung auf den is_home() oder den is_date() , also auf diesen $this->queried_object = null; wird nicht aktualisiert und die function gibt null .

Meine Frage ist also, ob diese functionalität beabsichtigt ist (zB soll man nicht get_queried_object () auf diesen Seiten verwenden), eine technische Einschränkung (gibt es kein sinnvolles Objekt, das auf diesen Seiten zurückgegeben wird), oder einfach eine Implementierungskontrolle?

Gibt es sogar ein Äquivalent des benutzerdefinierten Post-Type-Objekts für den integrierten Postposttyp “Blogpost”, der angezeigt werden soll?

Solutions Collecting From Web of "get_queried_object () gibt null für das Post-Date-Archiv zurück"

also meine Frage ist, ist diese beabsichtigte functionalität (zB soll man nicht get_queried_object () auf diesen Seiten verwenden), eine technische Einschränkung (gibt es kein sinnvolles Objekt, das auf diesen Seiten zurückgegeben wird), oder einfach eine Implementierungskontrolle?

get_queried_object () soll den Begriff, den Autor, den einzelnen Post, den einzelnen benutzerdefinierten Post-Typ oder das Seitenobjekt abfragen. Ja, das ist beabsichtigt und wofür wurde diese function entwickelt.

Wenn Sie sich in einem Datumsarchiv, einer Homepage oder einer Suche befinden, wird kein einzelnes Objekt abgefragt.

Bearbeiten:

Basierend auf dem ersten Kommentar unten muss das OP das post_type Objekt erhalten. Das post_type-Objekt unterscheidet sich vom abgefragten_Objekt. Wenn Sie das post_type-Objekt auf einer Archivseite abrufen müssen, können Sie es von query_vars abrufen.

 global $wp_query; $post_type_object = get_post_type_object( $wp_query->query_vars['post_type'] );