Aktuelle Kategorie-ID der aktiven Seite abrufen


76

Sie möchten die Kategorie-ID einer bestimmten Seite in WordPress abrufen, auf der alle Beiträge aufgelistet sind, die diese bestimmte Kategorie verwenden. Versuchte das unten, aber nicht funktioniert. Ich kann den Kategorienamen mit abrufen single_term_title.

$category = single_term_title("", false);
$catid = get_cat_ID( $category );

$categoryzeigt zum Beispiel "Unterhaltung" an. Ich brauche aber auch die ID "Unterhaltung". Wie würde ich das machen?


Ist es eine normale Kategorieseite oder eine benutzerdefinierte Seitenvorlage?
Paislee

Es ist eine benutzerdefinierte Taxonomie - versucht, diese für eine Datei mit dem Namentaxonomy-event-categories-entertainment.php
RonnieT

Antworten:


71

Sie können versuchen, Folgendes zu verwenden get_the_category():

$categories = get_the_category();
$category_id = $categories[0]->cat_ID;

16
$ category [0] -> cat_ID um genau zu sein.
Nemesisdesign

56
Diese Methode überprüft tatsächlich die erste Kategorie des ersten Beitrags auf der Seite. Wenn es keine Beiträge gibt oder wenn der erste Beitrag mehrere Kategorien hat, schlägt dies fehl oder es werden falsche Informationen zurückgegeben.
Jordan Eldredge

5
Ich bin mit @JordanEldredge einverstanden, dies wird falsche Informationen zurückgeben.
Bill

3
Dies gibt die erste Kategorie des ersten Beitrags der Seite zurück.
Shaffe

Es schlägt auch fehl, wenn die angezeigte Seite eine Unterkategorie ist. Überprüfen Sie die Ausgabe des $categoriesArrays.
Egdavid

193

Wenn es sich um eine Kategorieseite handelt, können Sie die ID der aktuellen Kategorie abrufen, indem Sie:

$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID;

Wenn Sie die Kategorie-ID einer bestimmten Kategorie auf einer beliebigen Seite abrufen möchten, verwenden Sie Folgendes:

$category_id = get_cat_ID('Category Name');

3
Genau das, wonach ich gesucht habe. Besser als die obige Antwort, wenn Sie eine generische Kategorievorlage erstellen, da Sie nur die Kategorie erhalten, die auf der Seite angezeigt wird, im Gegensatz zu dem oben genannten Array mit mehreren Kategorien.
Theflowersoftime

Es hat perfekt für mich funktioniert. Ich hatte Probleme, den Ausweis zu bekommen und arbeitete sehr gut für mich. Gespeicherte Stunden :)
Prakashchhetri

3
Müssen die richtige Antwort ersetzen! Die als richtig markierte Antwort hat mich in die Irre geführt.
Mosh Feu

13
Diese Antwort enthält unnötigen Code. In der ersten Codezeile werden die vollständigen Kategoriedaten in der Funktion get_category mithilfe eines Parameters abgerufen - CATEGORY ID (da get_query_var ('cat') dies zurückgibt). Die zweite Codezeile ruft die ID tatsächlich aus den Daten ab. Dies bedeutet, dass die Funktion get_category hier völlig unbenutzt ist und wenn jemand nur die ID möchte, sollte nur get_query_var ('cat') verwendet werden!
Bartosz Górski

Danke, das hat mir auch geholfen!
Jason Ellis

36

Der älteste, aber schnellste Weg, den Sie verwenden können, ist:

$cat_id = get_query_var('cat');

das scheint perfekt zu sein. Gibt es Nachteile gegenüber Ram Mehar Deswals Antwort?
Tau

Dies ist eigentlich die Arbeitslösung, es wird die Kategorie der angezeigten Seite angezeigt.
Egdavid

1
@dewd suchen Sie nach Bartosz Górskis Kommentar in Ram Mehar Deswals Antwort. Er hat vollkommen recht und diese Antwort hier tut alles, was Sie brauchen.
Honk31

@ Honk31 Danke, dass du mich darauf hingewiesen hast, dass du ein guter SO-Bürger bist! :)
Deww

get_query_var ('cat') ist falsch für mich
Dominic

21

Ich verwende die Funktion get_queried_object, um die aktuelle Kategorie auf einer Vorlagenseite für category.php abzurufen.

$current_category = get_queried_object();

Jordan Eldredge hat recht, get_the_category ist hier nicht geeignet.


1
Schön, noch nie gesehen.
Drew Baker

Wenn das Ergebnis nicht das erwartete ist, rufen Sie es wp_reset_query();auf, um die Standardinstanz WP_Query wiederherzustellen.
Shaffe

Dies ist tatsächlich die nützlichste Wordpress-Funktion, die ich je gefunden habe. Es ist überall verwendbar: Seiten, Artikel, Kategorien usw.
frodeborli

4

Ich denke, einige der oben genannten Funktionen funktionieren möglicherweise, aber die Verwendung der Funktion get_the_category scheint schwierig zu sein und zu unerwarteten Ergebnissen zu führen.

Ich denke, der direkteste und einfachste Weg, auf die Katzen-ID auf einer Kategorieseite zuzugreifen, ist:

$wp_query->query_vars['cat']

Prost


Perfekt! Vielen Dank.
Beny

1

Ich habe diese Frage gefunden, als ich genau nach dem gesucht habe, was Sie gestellt haben. Leider haben Sie eine falsche Antwort akzeptiert. Für andere Leute, die versuchen, das zu erreichen, was wir erreichen wollten, dachte ich, ich würde die richtige Antwort posten.

$cur_cat = get_cat_ID( single_cat_title("",false) );

Wie Sie sagten, single_term_title("", false);wurde der Kategorietitel korrekt zurückgegeben. Ich bin mir nicht sicher, warum Sie Probleme mit Ihrem Code gehabt hätten. aber der obige Code funktioniert einwandfrei für mich.


1

Ich habe dies für Breadcrums auf der Kategorie-Vorlagenseite verwendet:

$cat_obj = $wp_query->get_queried_object();
$thiscat_id = $cat_obj->term_id;
$thiscat = get_category($thiscat_id);
$parentcat = get_category($thiscat->parent);

1

Alternative -

 $catID = the_category_ID($echo=false);

BEARBEITEN: Die oben genannte Funktion ist veraltet. Bitte verwenden get_the_category()


Zu Ihrer Information: Diese Funktion ist veraltet.
Sagive SEO

1

Wenn Sie die Kategorie-ID benötigen, erhalten Sie diese über get_query_var , mit der alle öffentlich abfragbaren Variablen abgerufen werden können.

$category_id = get_query_var('cat');

Hier ist ein Beispiel, um den Kategorienamen zu erhalten

$category_name = get_query_var('category_name');

und natürlich das mächtige get_queried_object

$queried_object = get_queried_object();

das gibt das vollständige Taxonomie-Termobjekt zurück (wenn es auf einer Taxonomie-Archivseite verwendet wird ..)


0
$cats = wp_get_post_terms( $post->ID, 'product_cat' );
foreach($cats as $cat){
/*check for category having parent or not except category id=1 which is wordpress default category (Uncategorized)*/
  if($cat->parent != '0' && $cat->term_id != 1){
    echo '<h2 class="link"><a href="'.get_category_link($cat->term_id ).'">'.$cat->name.'</a></h2>';
    break;
  }
}

0

Oben nach Lösungen gesucht, um die Katzen-ID eines Posts zu finden, aber nichts hat funktioniert. Verwenden Sie stattdessen Folgendes:

$obj = get_queried_object();
$c_id = wp_get_post_categories($obj->ID);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.