web-dev-qa-db-fra.com

Exclure les tags de get_the_tags

En suivant cet article pour obtenir des balises par date, je me demandais si je pouvais exclure certaines balises de ce qui est retourné. L’important est d’avoir des étiquettes de tendance, mais certaines seront toujours présentes et je ne veux pas les inclure.

Voici le code:

    <?php
    $how_many_posts = 50;
    $args = array(
        'posts_per_page' => $how_many_posts,
        'orderby' => 'date',
        'order' => 'DESC',
    );
    // get the last $how_many_posts, which we will loop over
    // and gather the tags of
    query_posts($args);
    //
    $temp_ids = array();
    while (have_posts()) : the_post(); 
        // get tags for each post
        $posttags = get_the_tags();
        if ($posttags) {
            foreach($posttags as $tag) {
                // store each tag id value
                $temp_ids[] = $tag->term_id;
            }
        }
    endwhile;
    // we're done with that loop, so we need to reset the query now
    wp_reset_query();
    $id_string = implode(',', array_unique($temp_ids));
    // These are the params I use, you'll want to adjust the args
    // to suit the look you want    
    $args = array(
        'smallest'  => 15, 
        'largest'   => 15,
        'unit'      => 'px', 
        'number'    => 10,  
        'format'    => 'flat',
        'separator' => "\n&bull;\n",
        'orderby'   => 'count', 
        'order'     => 'DESC',
        'include'   => $id_string,  // only include stored ids
        'link'      => 'view', 
        'echo'      => true,

    );
    wp_tag_cloud( $args );
    ?>

UPDATE:Je me demande depuis que passer un objet 'exclude' dans les arguments de wp_tag_cloud n'a pas fonctionné comme une des réponses suggérées, si effectuer un non défini avant l'exécution de wp_tag_cloud est comment le faire fonctionner ? Le problème est que je ne connais pas grand-chose à propos de php ou de Wordpress, je ne sais donc pas comment intégrer cela au code ci-dessus.

                foreach( $tags as $tag_key => $tag_object ) {
                if ( 'tag1' == $tag_object->slug || 'tag2' == $tag_object->slug ) {
                        unset( $tags[$tag_key] );
                        }
                    }

Merci de votre aide!

UPDATE 2:@artlung réponse a parfaitement fonctionné.

3
Dustin J
<?php
    $how_many_posts = 50;
    $exclude_these_term_ids = array(
       10,
       20,
       35,
    );
    $args = array(
        'posts_per_page' => $how_many_posts,
        'orderby' => 'date',
        'order' => 'DESC',
    );
    // get the last $how_many_posts, which we will loop over
    // and gather the tags of
    query_posts($args);
    //
    $temp_ids = array();
    while (have_posts()) : the_post(); 
        // get tags for each post
        $posttags = get_the_tags();
        if ($posttags) {
            foreach($posttags as $tag) {
                // store each tag id value
                // that is not in the $exclude_these_term_ids
                // array
                if (!in_array($tag->term_id, $exclude_these_term_ids)) {
                    $temp_ids[] = $tag->term_id;
                }
            }
        }
    endwhile;
    // we're done with that loop, so we need to reset the query now
    wp_reset_query();
    $id_string = implode(',', array_unique($temp_ids));
    // These are the params I use, you'll want to adjust the args
    // to suit the look you want    
    $args = array(
        'smallest'  => 15, 
        'largest'   => 15,
        'unit'      => 'px', 
        'number'    => 10,  
        'format'    => 'flat',
        'separator' => "\n&bull;\n",
        'orderby'   => 'count', 
        'order'     => 'DESC',
        'include'   => $id_string,  // only include stored ids
        'link'      => 'view', 
        'echo'      => true,

    );
    wp_tag_cloud( $args );
    ?>
2
artlung

La fonction get_the_tags renvoie un tableau d'objets, un objet pour chaque balise affectée à la publication. Si vous souhaitez exclure certaines balises, vous pouvez le faire dans la fonction wp_tag_cloud à l'aide de l'ID ou du slug de la balise. Exemple:

$args = array(
        'smallest'  => 15, 
        'largest'   => 15,
        'unit'      => 'px', 
        'number'    => 10,  
        'format'    => 'flat',
        'separator' => "\n&bull;\n",
        'orderby'   => 'count', 
        'order'     => 'DESC',
        'include'   => $id_string,  // only include stored ids
        'exclude'   => 'tag1, tag2, tag3',
        'link'      => 'view', 
        'echo'      => true,

    );
    wp_tag_cloud( $args );
1
Pontus Abrahamsson