Cum să obții toate etichetele unui tip de postare personalizată după ID

18 mar. 2015, 10:36:51
Vizualizări: 14K
Voturi: 1

Î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

3
Comentarii

@PieterGoosen am încercat funcția implicită de tag-uri din WordPress dar am nevoie de ceva personalizat, așa că caut o soluție, aici poți vedea ce am făcut în cercetarea mea.

sohan sohan
18 mar. 2015 11:53:08

Mai întâi spui "print_r nu returnează nimic", apoi după blocul de cod spui "îmi returnează tag-uri", returnează nimic sau returnează tag-uri greșite? Folosești funcția corect din câte văd, așa că următorul pas ar fi să te asiguri că $post->ID este ID-ul pe care te aștepți. Următorul pas este să te asiguri că $post->ID are tag-uri atribuite în panoul de administrare. În final, aș verifica dacă taxonomia product_tag este scrisă corect.

Howdy_McGee Howdy_McGee
18 mar. 2015 15:50:40

wp_get_post_tags nu îmi returnează date în timp ce wp_get_post_terms îmi returnează date sub formă de array. Prin analizarea acestuia pot obține tag-urile. Aici tag-urile sunt de asemenea de tip custom "product_tag" pentru post_type=product.

sohan sohan
19 mar. 2015 12:18:46
Toate răspunsurile la întrebare 4
0

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.

16 aug. 2016 11:07:18
0

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;
    }
7 iun. 2019 20:08:54
0

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;
    }
}
11 mar. 2019 22:03:51
2
-2
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">&shy;</i>
                </a>
            </div>
        <?php endforeach;
    }
} 
wp_reset_postdata();
3 nov. 2015 23:04:51
Comentarii

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.

Gabriel Gabriel
3 nov. 2015 23:33:55

Dacă ești "Luis" care tocmai a încercat să editeze această întrebare, te rugăm să-ți unifici conturile și să o editezi din nou.

cjbj cjbj
16 aug. 2016 10:49:43