Cum să obții toate etichetele unui tip de postare personalizată după ID
Întrebare simplă, cum să obțin toate etichetele unui tip de postare personalizată după ID? post_type=product.
Am încercat cu http://codex.wordpress.org/Function_Reference/wp_get_post_tags în bucla mea de postări și print_r nu a returnat nimic.
Așadar, am încercat asta:
$term_list = wp_get_post_terms($post->ID, 'product_tag', array("fields" => "all"));
print_r($term_list);
și acum primesc etichetele în print_r($term_list);
Mulțumesc
Abordarea prin buclă: de obicei fișierul archive-{custom_post}.php.
PRIMUL PAS:
custom_post_plural Reprezintă un grup de postări personalizate de un anumit tip.
Exemplu de custom_post_plural: produse
custom_post_singular Reprezintă un tip individual de postare personalizată.
Exemplu de custom_post_singular: produs
AL DOILEA PAS:
var $args_custom_post_plural sunt parametrii pentru WP_Query.
var $custom_post_plural este execuția interogării.
Am folosit var $custom_post_plural_output pentru a itera conținutul obiectului WP, în special cu termenul posts, făcând conținutul acestuia "prietenos cu array-uri".
După cum puteți vedea, am folosit parțial instrucțiunile lui Ahmad pentru o iterație imbricată.
$args_custom_post_plural=array(
'post_type' => 'custom_post_singular',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'order_by' =>'id',
'order' => 'ASC'
);
$custom_post_plural = new WP_Query($args_custom_post_plural);
$custom_post_plural_output = $custom_post_plural->posts;
for ($i=0; $i < count($custom_post_plural_output); $i++) {
$tags = wp_get_post_tags($custom_post_plural_output[$i]);
$buffer_tags ='';
foreach ( $tags as $tag ) {
$buffer_tags .= $tag->name . ',';
}
}
echo $buffer_tags;
ÎN FINAL:
Pentru informare, dacă doriți să utilizați acest lucru într-un fișier single-{custom_post}.php, puteți folosi următorul cod:
$tags = wp_get_post_tags($post->ID);
foreach ( $tags as $tag ) {
$buffer_tags .= $tag->name . ',';
}
echo $buffer_tags;
Deoarece trebuie să aveți o postare legată pentru a afișa orice.
Codare fericită.
PS. @cjbj De ce naiba ați șters editarea mea, avea ceva greșit sau ce? Management oribil aici și foarte rău intenționat, având în vedere că nu pot răspunde la un comentariu din cauza punctelor mele de reputație.

Dacă ai nevoie să obții etichetele după ID-ul postării, poți folosi următoarea funcție. Aceasta va funcționa oriunde deoarece metoda se bazează pe interogări în baza de date.
function sc_tf_get_tags_as_array($post_id){
global $wpdb;
$tbl_terms = $wpdb->prefix . "terms";
$tbl_term_relationships = $wpdb->prefix . "term_relationships";
$sql = "SELECT name FROM $tbl_terms WHERE term_id in (SELECT term_taxonomy_id FROM $tbl_term_relationships WHERE object_id='$post_id');";
$results = $wpdb->get_results($sql);
if($results){
foreach($results as $row){
$tags_list[] = $row->name;
}
}
return $tags_list;
}

wp_get_post_tags funcționează doar pentru articole, nu și pentru alte tipuri de postări. Dacă analizezi fișierul /wp-includes/post.php, vei observa că apelează funcția wp_get_post_terms cu parametrul $taxonomy setat la 'post_tag':
function wp_get_post_tags( $post_id = 0, $args = array() ) {
return wp_get_post_terms( $post_id, 'post_tag', $args );
}
Pentru etichetele de produs sau alte taxonomii, poți folosi în schimb funcția get_the_terms():
$tags = get_the_terms( $prod_id, 'product_tag' );
$tags_names = array();
if ( ! empty( $tags ) ) {
foreach ( $tags as $tag ) {
$tags_names[] = $tag->name;
}
}

global $post;
$tags = wp_get_post_tags( $post->ID );
if ( $tags ) {
foreach ( $tags as $tag ) {
$tag_arr .= $tag->slug . ',';
}
$args = array(
'tag' => $tag_arr,
'post_per_page' => 10,
'post__not_in' => array( $post->ID ),
'post_type' =>'post_type_name'
);
$related_posts = get_posts( $args );
if ( $related_posts ) {
foreach ( $related_posts as $post ) : setup_postdata( $post ); ?>
<div class="swiper-slide">
<a class="hover-effect image-holder" href="<?php the_permalink(); ?>">
<?php the_post_thumbnail(); ?>
<i class="icon-circle icon-circle--thin fa fa-arrow-right">­</i>
</a>
</div>
<?php endforeach;
}
}
wp_reset_postdata();

Răspunsurile ar trebui să fie mai mult decât un fragment de cod. Te rugăm să faci o editare și să explici de ce acest lucru ar funcționa.
