Obține taxonomia paginii curente

5 ian. 2011, 21:12:04
Vizualizări: 17.3K
Voturi: 2

Am câteva pagini cu o taxonomie personalizată pentru fiecare pagină și încerc să obțin această taxonomie pe pagină. Am nevoie de ceva similar cu the_current_taxonomy(), similar cu the_title(). Acest lucru trebuie să ruleze în afara loop-ului pentru că îl voi folosi într-o interogare personalizată WP_Query imediat după.

Edit: Am găsit o soluție folosind o altă metodă pentru a obține informațiile de care aveam nevoie. Vă mulțumesc pentru ajutor.

0
Toate răspunsurile la întrebare 4
2

La fel ca Rarst, sunt confuz în legătură cu ce dorești să afișezi: taxonomia sau termenii acelei taxonomii.

Taxonomia poate fi afișată, de exemplu, dacă creezi un fișier de șablon cu numele acelei taxonomii: taxonomy-name.php

Titlul taxonomiei devine atunci:

<h1 class="page-title"><<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?></h1>

Termenii dintr-o taxonomie pot fi afișați cu un tagcloud, vezi http://codex.wordpress.org/Function_Reference/wp_tag_cloud (dar asta se întâmplă în buclă)

6 ian. 2011 08:43:32
Comentarii

Scopul este de a afișa termenul dintr-o taxonomie alocat paginii curente. Așa că am încercat să afișez termenii din taxonomia mea cu wp_tag_cloud() și a funcționat, pot vedea cel pe care trebuie să îl afișez în mijloc. Apoi am încercat să folosesc funcția get_term_by() pe care mi-ai dat-o, dar fără succes.

kevin kevin
6 ian. 2011 17:36:18

Am încercat, de asemenea, să schimb al doilea parametru în $post->ID, așa cum este arătat în exemplul de pe http://codex.wordpress.org/Function_Reference/get_term_by#Examples pagina codex, dar tot fără succes.

kevin kevin
6 ian. 2011 17:41:37
10

Presupun că taxonomy este același și ceea ce ai nevoie sunt terms din acea taxonomie, atribuite postării?

Funcția de nivel scăzut pentru aceasta este wp_get_object_terms(). Ea necesită ID-ul obiectului, așa că dacă resetezi datele postării, va trebui să le stochezi dinainte sau să le extragi din interogarea originală (din câte îmi amintesc, $wp_query->get_queried_object_id()).

5 ian. 2011 23:01:49
Comentarii

Da, așa cum am scris într-un comentariu mai sus, trebuie să extrag un termen dintr-o taxonomie atribuită paginii pentru a-l folosi apoi ca parametru în noul meu WP_Query(). Problema cu wp get object terms() este că necesită o taxonomie ca parametru.

kevin kevin
6 ian. 2011 17:39:06

@kevin Presupun că dacă este propria ta taxonomie personalizată, știi care este pentru a o folosi ca parametru? Sau vrei toți termenii din toate taxonomiile atribuite postului? Te rog să clarifici.

Rarst Rarst
6 ian. 2011 17:49:06

Da, este a mea, dar m-am exprimat destul de neclar, voiam să găsesc termenul permis unei anumite taxonomii pe care o cunosc și care este, de asemenea, legată de pagină. Îmi cer scuze pentru lipsa de claritate.

kevin kevin
7 ian. 2011 15:36:37

@kevin Încă nu înțeleg... te rog actualizează întrebarea ta cu un exemplu specific despre ce anume ai și ce vrei să obții

Rarst Rarst
7 ian. 2011 17:29:34

@Rarst, problemă rezolvată, am editat primul meu post.

kevin kevin
7 ian. 2011 19:01:07

@kevin dacă nu te deranjează - te rog adaugă soluția la care ai ajuns ca răspuns, astfel încât și alții să poată beneficia de ea în viitor.

Rarst Rarst
7 ian. 2011 19:02:47

@Rarst, gata; Edit2.

kevin kevin
7 ian. 2011 21:17:32

@kevin ca un răspuns, te rog :) Așa funcționează sistemul - întrebare și detalii separat, răspunsuri concurente separat, chiar dacă răspunzi la propria întrebare. Astfel este mai puțină confuzie, dacă cineva oferă o versiune îmbunătățită a codului și altele asemenea.

Rarst Rarst
7 ian. 2011 21:22:48

Sigur, îmi pare rău, nu știam. Edit: trebuie să aștept 3 minute.

kevin kevin
7 ian. 2011 21:26:56

@Rarst, totul este gata.

kevin kevin
7 ian. 2011 21:35:06
Arată celelalte 5 comentarii
0

Așadar, aveam nevoie să extrag termenul dintr-o taxonomie cunoscută asociată unei pagini (ca în exemplul următor):

function register_prod_categoria() {
  register_taxonomy(
     'prod-categoria',
     array( 'produtos', 'page' ),

(unde produtos este un tip de postare personalizată, doar pentru informație).

Am încercat diverse metode, printre care și aceasta: get_terms('prod-categoria',''). Aceasta funcționează, dar returnează toate informațiile despre taxonomia mea prod-categoria, ceea ce nu era exact ce aveam nevoie.

Apoi, conform codex-ului, există doi parametri (interesanți pentru mine) disponibili pentru get_terms(): child_of și parent. Părea perfect, așa că am încercat: get_terms('prod-categoria','child_of=marca'); și de asemenea get_terms('prod-categoria','parent=marca'), unde marca este un termen părinte (din taxonomia personalizată prod-categoria) din care doream să extrag termenii copil. Ambele metode nu au returnat niciun rezultat. Am încercat și cu numele Marca și slug-ul marca, fără succes.

Soluția la care am ajuns este următoarea: $tt = the_title('','',false);. Obțin titlul paginii pentru a-l folosi ca parametru mai departe: $posts = posts_search ('produtos',array('prod-categoria'=>$tt,'prod-cols'=>'5-C-P-F-NF-P')); if($posts) { echo "<table class=\"table-marca\">"; foreach($posts as $post) { ... }

Apropo, funcția posts_search() (pe care am găsit-o pe http://wordpress.stackexchange.com sau http://stackoverflow.com, dacă îmi amintesc corect, nu sunt sigur exact) permite efectuarea de interogări pe mai multe taxonomii.

Recunosc că această soluție este departe de a fi perfectă, deoarece titlul paginii trebuie să coincidă cu numele taxonomiei, dar în cazul meu funcționează. Mulțumesc mult lui Rarst și Piet pentru încercarea lor de a ajuta.

7 ian. 2011 21:33:45
0

Dacă ești deja pe pagina de categorie/termen, poți apela get_queried_object(); înainte de a rula interogarea personalizată pentru a obține informații despre categorie/termen, inclusiv slug-ul.

5 mai 2012 01:23:31