Holen Sie sich die Kategorie-ID in die Kategorie-Vorlage
8 Antworten
- Stimmen
-
- 2011-05-29
$wp_query->get_queried_object()
gibt Ihnen das "aktuell abgefragte Objekt".Ineinem Kategoriearchivist dies das Kategorieobjekt,aufeiner Autorenseiteist dies der Autor,in einemeinzelnen Beitragist dies der Beitrag selbst,...nun,Sie haben die Idee.Wenn Sienur die IDmöchten,können Sie auch$wp_query->get_queried_object_id()
verwenden.$wp_query->get_queried_object()
will give you the "currently queried object". On a category archive this is the category object, on a author page this is the author, on a single post this is the post itself, ... well, you get the the idea. If you only want the ID you can also use$wp_query->get_queried_object_id()
. -
- 2017-02-04
Basierend aufmeiner Suchemüssen Sie Folgendes verwenden:
$category = get_queried_object(); echo $category->term_id;
base on my search you must use this:
$category = get_queried_object(); echo $category->term_id;
-
Ichgehe davon aus,dass Sie die Abwertungerhalten haben,weil Sienichterklären,warumes hilft,sondernnur sagen,dass dies der Fallist.Möglicherweisemöchten Sie die Quelle dieser Funktion überprüfen und Ihre Ergebnisse als Bearbeitung zu Ihrer Antwort hinzufügen.Hinweis: Wennein Kommentar länger als Ihre Antwort seinmuss,sollteesein Kommentar sein :)I assume you received the downvote because you are not _explaining_ why it helps, just stating that this does. You might want to inspect the source of that function and add your outcomings as edit to your answer. Hint: If a comment needs to be longer than your answer, then it should have been a comment :)
- 0
- 2017-02-04
- kaiser
-
- 2011-07-01
Ähm,ich kannnoch keinen Kommentar abgeben,aber die Antwort von VicePrezfunktioniert.Das Folgendefunktioniert aufeiner Kategoriearchivseiteeinwandfrei (obwohl Sie wahrscheinlichetwas anderestunmöchten,alsesnur wiederzugeben):
<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>
BEARBEITEN: Scratch das,es hatbei mirfunktioniert,bisich aufeine Kategoriegestoßenbin,die keinen Beitrag hatte,und dann die Unterkategorie anstelle der Hauptkategorie ausgewählt. Sie können sichnicht aufget_the_category aufeiner Kategorievorlagenseite verlassen .
Umm, I can't comment yet, but VicePrez's answer does work. The following works just fine on a category archive page (although you probably want to do something other than just echo it):
<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>
EDIT: Scratch that, it worked for me until I came across a category that didn't have a post, then it picked up the subcategory instead of the main category. You can't rely on get_the_category on a category template page.
-
Diesist keinepraktikable Lösung,da hiermit alle Kategorienfür alle Beiträge auf dieser Kategorieseite zurückgegeben werden.Ihr Echo-Ergebnisgibt die ursprüngliche Kategorie des letzten Beitragsin der Liste zurück.This is not a viable solution as this returns all the categories for all the posts on that category page. Your echoed result returns the initial category of the latest post in the list.
- 0
- 2017-11-21
- cj5
-
- 2011-05-29
Sofernich die Fragenichtfalsch verstehe,können Sie der Körperklasse auch die Kategorie-ID/Schnecke hinzufügen:
<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?> <body <?php body_class($cat_ID); ?>>
Unless I am misunderstanding the question, I think you can also add the category id/slug to the body class:
<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?> <body <?php body_class($cat_ID); ?>>
-
- 2011-07-12
@Jan Fabrys Antwortisteigentlich die richtige Antwort. Hierist der Grund: Da Wordpressmehrere Kategorienfüreinen Beitrag zulässt,verwenden Sie
$ category=get_the_category ()
undfragen Sie$ category [0]
funktioniertnichtin jedem Fall,da Sietatsächlichnach derersten Kategorie desersten Beitragsfragen.Stellen Sie sich vor,Sie haben die Kategorien A,B und C. Wenn Sienureinen Beitrag haben,der die Kategorien A und Benthält und Sie sich auf der Kategorieseite von Bbefinden,erhalten Siemöglicherweise stattdessen die Informationen von A. Deshalbistesbesser,
$ category=$ wp_query- >get_queried_object ()
zu verwenden,da Sieim vorherigen Beispielimmer die Informationen von Berhalten,wenn Sie sich auf der Kategorieseite von Bbefinden.@Jan Fabry's response is actually the correct answer, here's why: Since Wordpress allows multiple categories for a post, using
$category = get_the_category()
and querying$category[0]
will not work in every case since what you're actually doing is asking for the first category of the first post. Imagine you have categories A, B and C. If you have only one post, it has categories A and B and you're inside B's category page, you may end up with A's information instead.That's why it's better to use
$category = $wp_query->get_queried_object()
, because in the previous example it will always get you B's information when you're inside B's category page. -
- 2011-05-29
Sie können dazu
get_the_category()
verwenden.Beispiel:
<?php $category = get_the_category(); // use this to echo the slug echo $category[0]->slug; // use this to echo the cat id echo $category[0]->cat_ID; // if you've got multiple categories you can run a foreach loop like so foreach ( $category as $cat ) : echo '<li>' . $cat->name . '</li>'; endforeach; ?>
Sie können Folgendes verwenden:
<?php echo '<pre>'; print_r($category); echo '</pre>'; ?>
,um das Array der zurückgegebenen Objekte anzuzeigen.
You could use
get_the_category()
to do that.Example:
<?php $category = get_the_category(); // use this to echo the slug echo $category[0]->slug; // use this to echo the cat id echo $category[0]->cat_ID; // if you've got multiple categories you can run a foreach loop like so foreach ( $category as $cat ) : echo '<li>' . $cat->name . '</li>'; endforeach; ?>
You could use:
<?php echo '<pre>'; print_r($category); echo '</pre>'; ?>
to view the array of objects that are returned.
-
Die Frage "Wieerhalteich die Katzen-IDin der Vorlage?" kann unterschiedlichinterpretiert werden.Innerhalbeinereinzelnen Post-Vorlage haben Sie Recht.Esfunktioniertinnerhalb der Schleife,um Kategorieneineseinzelnen Beitrags abzurufen.`get_the_category ()`funktioniertjedochnicht aufeiner Kategoriearchivseite,um die Kategorie-ID abzurufen. Das Ergebnis wäre willkürlich.the question 'how do I get the cat ID inside the Template' is open to different interpretation. within a single post template, you are right. it works inside the loop to get categories of a single post; however,`get_the_category()` will not work in a category archive page to get the category id, the result would be arbitrary.
- 0
- 2011-05-29
- Michael
-
@ Michael wahr sagen.@Jan scheintin Bezug auf diesen spezifischen Kontexteine angemessenere Antwortgegeben zu haben.@Michael true say. @Jan seems to have given a more appropriate answer in relation to that specific context.
- 0
- 2011-05-29
- VicePrez
-
`get_the_category ()`funktioniertin category.php`get_the_category()` does work inside category.php
- 1
- 2011-07-05
- Lea Cohen
-
- 2013-01-11
$category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; $catname=explode(",",get_category_parents($cat_id,'',',')); print_r($catname);
$category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; $catname=explode(",",get_category_parents($cat_id,'',',')); print_r($catname);
-
Bitteerklären Sie ** warum ** das das Problem lösen könnte.Ein Code-Snippetist keine Antwort.Please explain **why** that could solve the problem. A code snippet is not an answer.
- 1
- 2013-01-11
- fuxia
-
- 2013-09-23
Diemeisten der obengenannten Beispielefunktionieren,aber wenn Siemehrere Kategorien verwenden,funktioniert KEINE (zum Zeitpunkt des Schreibens,WP-Version 3.6) der anderen Methoden,um alle Kategorien abzurufen,die aneine derbeiden übergeben wurden. " cat "oder" category_name ".
Dereinzige Weg,denichgefunden habe,besteht darin,die Daten abzurufen von:
$wp_query->query['category_name']
Ausirgendeinem Grundgibt dieseinen anderen Wert als
get_query_var( 'category_name' )
zurück,dernur dieerste Kategorie zurückgibt.Wenn Siemehrere Kategorien verwenden,müssen Sieeine Funktion wie
explode
verwenden,umein Array von Kategorie-Slugs zuerhalten,und diese dann durchlaufen,um alle IDs abzurufen:<?php global $wp_query; //grab all categories from query string (if using `category_name`) $category_slugs_array = explode("+",esc_attr($wp_query->query['category_name'])); $categories = array(); $category_ids = array(); //loop through all the slugs foreach($category_slugs_array as $category_slug) { //get category object using slug $category = get_category_by_slug( $category_slug ); //check to make sure a matching category has been found if(isset($category->cat_ID)) { $categories[] = $category; $category_ids[] = $category->cat_ID; } } var_dump($categories); //array of categories var_dump($category_ids); //array of category IDs ?>
Bei der Verwendung von AND (+) - oder OR (,) -Operatorenmüssennatürlicheinige Überlegungenberücksichtigt werden.
Most of the above examples work but if you are using multiple categories NONE (as of writing, WP version 3.6) of the other methods work to get all the categories that have been passed to either "cat" or "category_name".
The only way I have found is to pull the data from:
$wp_query->query['category_name']
For some reason this returns a different value to
get_query_var( 'category_name' )
which only returns the first category.When using multiple categories you will have to use some function like
explode
to get an array of category slugs, then loop through that to grab all the IDs:<?php global $wp_query; //grab all categories from query string (if using `category_name`) $category_slugs_array = explode("+",esc_attr($wp_query->query['category_name'])); $categories = array(); $category_ids = array(); //loop through all the slugs foreach($category_slugs_array as $category_slug) { //get category object using slug $category = get_category_by_slug( $category_slug ); //check to make sure a matching category has been found if(isset($category->cat_ID)) { $categories[] = $category; $category_ids[] = $category->cat_ID; } } var_dump($categories); //array of categories var_dump($category_ids); //array of category IDs ?>
Obviously there needs to be some considerations when using AND (+) or OR (,) operators.
Wieerhalteich die Katzen-IDin der Vorlage?Sehr wichtig: Ich kannesnichtmit dem Namentun,weil wirmehrere Katzenmit demgleichen Namen haben.Nur die Schneckeist anders.Wennich die Schneckebekommen würde,wärees auch okay. Aber wiegesagt: Ich kann den Cat-Titelnicht verwenden .....