web-dev-qa-db-fra.com

Afficher les étiquettes d'une catégorie spécifique dans des champs sélectionnés

Je souhaite afficher toutes les balises sous une forme sélectionnée provenant d'articles ayant été affectés à une catégorie spécifique.

J'utilise le code suivant pour générer chaque étiquette dans un formulaire de sélection

<div>
<?php
echo "<select onChange=\"document.location.href=this.options[this.selectedIndex].value;\">";
echo "<option>By product</option>\n";
foreach (get_tags() as $tag)
{
  echo "<option value=\"";
  echo get_tag_link($tag->term_id);
  echo "\">".$tag->name."</option>\n";
}
      echo "</select>"; ?>
</div>

Quelqu'un peut-il m'indiquer comment afficher simplement les balises de toutes les publications affectées à la catégorie vidéos?

Toute aide très appréciée

1
rikardo85

D'après ma compréhension de la question et votre commentaire:

Je souhaite afficher toutes les balises provenant d'articles ayant été affectés à la catégorie spécifique.

Vous devez d’abord obtenir tous les articles auxquels cette étiquette est attribuée, parcourir ces articles et enregistrer les étiquettes uniques dans un tableau. Enfin, parcourez le tableau et affichez-les dans la liste de sélection. La seule chose que vous devriez faire de votre côté est de remplacer $reltaed_term_id = 7 par l’identifiant de l’identifiant de l’étiquette que vous souhaitez cibler.

<?php
    $reltaed_term_id        = 7;
    $unique_related_tags    = array();

    $related = new WP_Query( array(
        'post_type'     => 'post',
        'posts_per_page'=> -1,
        'fields'        => 'ids',
        'cat '          => $reltaed_term_id,
    ) );

    if( $related->have_posts() ) {
        foreach( $related->posts as $post_id ) {
            $tags = wp_get_post_tags( $post_id );
            if( ! empty( $tags ) ) {
                foreach( $tags as $tag ) {
                    if( empty( $unique_related_tags ) || ! array_key_exists( $tag->term_id, $unique_related_tags ) ) {
                        $unique_related_tags[ $tag->term_id ] = $tag->name;
                    }
                }
            }
        }

        wp_reset_postdata();
    }

    if( ! empty( $unique_related_tags ) ) :
?>

        <div>
            <select onChange="document.location.href=this.options[this.selectedIndex].value;">
                <option>By product</option>

              <?php foreach( $unique_related_tags as $tag_id => $tag_name ) : ?>

                <option value="<?php echo get_tag_link( $tag_id ); ?>"><?php echo $tag_name; ?></option>

              <?php endforeach; ?>

            </select>
        </div>

<?php endif; ?>

Je n'ai pas testé le code ci-dessus, alors laissez-moi savoir si vous rencontrez des problèmes.

2
Howdy_McGee