Ottieni l'ID della categoria all'interno del modello di categoria
8 risposta
- voti
-
- 2011-05-29
$wp_query->get_queried_object()
ti darà l '"oggetto attualmenteinterrogato".In un archivio di categoria questo è l'oggetto della categoria,in unapagina dell'autore questo è l'autore,in un singolopost questo èilpost stesso,...beh,l'idea.Se vuoi solo l'IDpuoi anche usare$wp_query->get_queried_object_id()
.$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
in base allamia ricerca devi usare questo:
$category = get_queried_object(); echo $category->term_id;
base on my search you must use this:
$category = get_queried_object(); echo $category->term_id;
-
Presumo chetu abbia ricevutoil votonegativoperchénon stai _spiegando_perché aiuta,semplicemente affermando che lofa.Potresti volerispezionare lafonte di quellafunzionee aggiungerei tuoi risultati comemodifica allatua risposta.Suggerimento: se un commento deveesserepiù lungo dellatua risposta,allora avrebbe dovutoessere un commento :)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
Umm,nonposso ancora commentare,ma la risposta di VicePrezfunziona.Quanto seguefunzionaperfettamente su unapagina di archivio di categorie (anche seprobabilmente vorraifare qualcosa di diverso dal sempliceeco):
<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>
MODIFICA: Gratta questo,hafunzionatoperme fino a quandononmi sonoimbattutoin una categoria chenon aveva unpost,quindi ha scelto la sottocategoriainvece della categoriaprincipale. Nonpuoifare affidamento suget_the_category sullapagina di unmodello di categoria .
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.
-
Questanon è una soluzionepraticabilein quanto restituiscetutte le categoriepertuttii post su quellapagina di categoria.Il risultato ripreso restituisce la categoriainiziale dell'ultimopostnell'elenco.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
Ameno chenon stiafraintendendo la domanda,penso chetupossa anche aggiungere la categoriaid/slug alla classe del corpo:
<?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
La risposta di @Jan Fabry èin realtà la risposta corretta,eccoperché:poiché Wordpress consentepiù categorieper unpost,utilizzando
$category = get_the_category()
e interrogando$category[0]
nonfunzioneràin ogni casopoiché ciò che staieffettivamentefacendo è chiedere laprima categoria delprimopost.Immagina di avere le categorie A,Be C. Se hai un solopost,ha le categorie Ae Be titrovinellapagina della categoria B,potrestiinvece ritrovarti con leinformazioni di A.Eccoperché èmeglio usare
$category = $wp_query->get_queried_object()
,perchénell'esempioprecedente riceverà sempre leinformazioni di B quandoti trovinellapagina della categoria B./p>
@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
Potresti usare
get_the_category()
perfarlo.Esempio:
<?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; ?>
Potresti usare:
<?php echo '<pre>'; print_r($category); echo '</pre>'; ?>
per visualizzare lamatrice di oggetti restituiti.
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.
-
la domanda "come ottengo l'ID delgatto all'interno delmodello" è aperta a diverseinterpretazioni.all'interno di un singolomodello dipost,hai ragione.funziona all'interno del cicloper ottenere le categorie di un singolopost;tuttavia,`get_the_category ()`nonfunzioneràin unapagina di archivio di categoriaper ottenere l'id della categoria,il risultato sarebbe arbitrario.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 vero dire.@Jan sembra aver dato una rispostapiù appropriatain relazione a quel contesto specifico.@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 ()`funziona all'interno di 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);
-
Spiega **perché ** questopotrebbe risolvereilproblema.Uno snippet di codicenon è una risposta.Please explain **why** that could solve the problem. A code snippet is not an answer.
- 1
- 2013-01-11
- fuxia
-
- 2013-09-23
Lamaggiorparte degliesempiprecedentifunziona,ma se utilizzipiù categorie NONE (almomentoin cui scrivo,WP versione 3.6) gli altrimetodifunzionanoper otteneretutte le categorie che sono statepassate a uno "gatto "o"nome_categoria ".
L'unicomodo che hotrovato èestrarrei dati da:
$wp_query->query['category_name']
Per qualchemotivo questo restituisce un valore diverso a
get_query_var( 'category_name' )
che restituisce solo laprima categoria.Quando si utilizzanopiù categorie,sarànecessario utilizzare unafunzione come
explode
per ottenere un array di slug di categoria,quindieseguireil loopper afferraretuttigli ID:<?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 ?>
Ovviamente ci devonoessere alcune considerazioni quando si usanogli operatori AND (+) o OR (,).
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.
come ottengo l'ID delgatto all'interno delmodello.Moltoimportante: Nonpossofarlo conilnome,perché abbiamopiùgatti con lo stessonome.Solo la lumaca è diversa.Se avessipreso lapallottola,andrebbebene anche lui. Ma come ho detto:nonposso usareiltitolo Cat .....