Afisarea termenilor pentru postări personalizate
Am reușit să afișez toți termenii aparținând unei taxonomii personalizate folosind codul de mai jos:
$args = array('post_type' => 'my_post_type','number' => '999');
$terms = get_terms( 'my_taxo',
[
'hide_empty' => true,
'orderby' => 'wpse_last_word',
] , $args );
foreach ( $terms as $term ) {
echo '' . $term->name . '';
}
Acest cod oferă rezultatele dorite pe localhost-ul meu (xampp). Practic, afișează toți termenii asociați unei anumite postări. Dar când încarc codul pe un server live, codul nu mai funcționează cum trebuie. În schimb, afișează toți termenii fără să-i filtreze. Am actualizat chiar și versiunea PHP pe serverul live să se potrivească cu cea de pe serverul local; tot fără succes.
Poate cineva să-mi indice problema din codul meu.

Codul tău este greșit. Nu știu cum funcționează pe localhost-ul tău. Motivul -
- Apelezi
get_terms()
cu 3 parametri, dar această funcție acceptă doar 2 parametri. Ultimul este în plus. - În al doilea rând,
get_terms()
returnează toți termenii unei taxonomii, nu termenii asociați cu un anumit post.
Pentru a obține termenii asociați unui post, poți folosi wp_get_post_terms
.
Utilizarea wp_get_post_terms
în interiorul loop-ului WordPress:
Pentru fiecare post, vei obține termenii acestuia apelând wp_get_post_terms
astfel:
//Fă ceva dacă o valoare specifică există în array-ul postului
$term_list = wp_get_post_terms($post->ID, 'taxonomia_ta', array("fields" => "all"));
// Apoi poți rula un foreach pentru a afișa termenii taxonomiei
foreach($term_list as $term_single) {
echo $term_single->slug; //fă ceva aici
}
Și pentru afara loop-ului:
// Fă ceva dacă o valoare specifică există în array-ul postului
// Și ai nevoie să obții ID-ul postului pentru a-l pasa mai departe
$term_list = wp_get_post_terms($post_id, 'taxonomia_ta', array("fields" => "all"));
// Apoi poți rula un foreach pentru a afișa termenii taxonomiei
foreach($term_list as $term_single) {
echo $term_single->slug; //fă ceva aici
}
Sper că te ajută.

Mulțumesc, voi verifica codex-ul și îți voi spune dacă funcționează, mulțumesc că mi-ai atras atenția. - @the_dramatist

Salut, am testat toate scripturile posibile și nu reușesc să obțin numele termenilor pentru postările care aparțin unui CPT. Poți fi atât de amabil să publici codul care face magia? Te rog să ții cont că codul meu este în afara loop-ului. Momentan folosesc:
$args = array('post_type' => 'projects','number' => '1');
$terms = wp_get_post_terms($post_id, 'Client',array("fields" => "names"), $args);
foreach( $terms as $term ){
echo '<h5>' . $term->name . '</h5>'; }

Poți să clarifici ce încerci să realizezi? Ar fi mai bine să editezi întrebarea și să o clarifici mai mult! @rosh8111

OK, am un tip de postare personalizat numit "projects", în care am creat o taxonomie numită "Clients", unde voi introduce clienții în backend. Deci de fiecare dată când un proiect este publicat, voi selecta un client pe care vreau să-l afișez în front-end.

Deci, trebuie să afișezi termenii asociați unui singur articol, corect? Și în interiorul buclei WordPress sau în afara buclei WordPress? Dacă în afara buclei, atunci în ce șablon single.php
sau archive.php
?

Am propriul meu șablon personalizat, de fapt această pagină se încarcă într-o pagină single.php personalizată asociată cu un tip de postare personalizat. Te voi actualiza cu rezultatele, mulțumesc pentru ajutor.

Am verificat codul pe care mi l-ai dat, dar din păcate nu returnează niciun rezultat, doar gol. Am încercat chiar și cu query post. Nimic..

Mai întâi înlocuiește your_taxonomy
cu numele taxonomiei tale clients
. Apoi fă un print_r($term_list)
și postează rezultatul aici împreună cu un screenshot din pagina de administrare a taxonomiei personalizate. @rosh8111

[link]http://pad10.net/assets/tax_error.jpg, găsiți atașat screenshot-ul cu configurația mea și rezultatele pe care le obțin.

După câteva cercetări, am găsit scriptul de mai jos care face treaba, mulțumesc @the_dramatist pentru că m-a îndreptat în direcția corectă. Am folosit global $post, dar nu într-un mod corect.
global $post;
$loop = new WP_Query(array('post_type' => 'myCPT', 'posts_per_page' => -1));
while ($loop->have_posts()) : $loop->the_post();
$terms = wp_get_post_terms($post->ID, 'my_taxonomy');
foreach($terms as $term_single) {
echo '' . $term_single->slug. '';
}
endwhile;
Dacă cineva obține rezultate goale după aceasta, ștergeți categoriile și recreați-le, apoi aplicați-le din nou.
