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?

RonnieT
quelle
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;
ash108
quelle
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');
Ram Mehar Deswal
quelle
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');
Fred K.
quelle
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.

Shaffe
quelle
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

Jorge Orpinel
quelle
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.

Rechnung
quelle
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);
guido _nhcol.com.br_
quelle
1

Alternative -

 $catID = the_category_ID($echo=false);

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

Bheru Lal Lohar
quelle
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 ..)

honk31
quelle
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;
  }
}
Abhijit Patel
quelle
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);
Robert Sinclair
quelle