Rediriger à la liste Poster Systématique sur la sélection des utilisateurs de la taxonomie Dropdown?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/4878

  •  16-10-2019
  •  | 
  •  

Question

  

( Note du modérateur: Le titre original était "déroulant taxonomie")

     

Je veux ajouter une liste déroulante remplie   avec mes taxonomies personnalisées, alors quand   quelqu'un choisit une valeur, il   à la page correspondante réoriente. je   essayé ce code, qui a travaillé

     

<?php wp_dropdown_categories( array( 'taxonomy' => 'name of taxonomy' ) ); ?>

     

Le problème est que je veux un à la page   rediriger l'utilisateur sans avoir besoin de   appuyer sur les boutons. Comment puis-je faire?

cette question a été résolue, mais je veux modifier davantage, je veux ajouter un shortcode, de sorte que je peux aussi appeler déroulante liste dans mon post, j'ai essayé cela, mais ne fonctionne pas add_shortcode('drop','the_taxonomy_dropdown');

mais quand j'appelle cela dans mon post [drop="location"] sa ne fonctionne pas, ce qui est le problème?

Était-ce utile?

La solution

Salut @ntechi:

Voici une fonction que j'ai écrit que j'ai appelé the_taxonomy_dropdown() pour vous donner ce que je pense que vous recherchez.

function the_taxonomy_dropdown($taxonomy) {
  $id = "{$taxonomy}-dropdown";
  $js =<<<SCRIPT
<script type="text/javascript">
 jQuery(document).ready(function($){
  $("select#{$id}").change(function(){
    window.location.href = $(this).val();
  });
 });
</script>
SCRIPT;
  echo $js;
  $terms = get_terms($taxonomy);
  echo "<select name=\"{$id}\" id=\"{$id}\">";
  foreach($terms as $term) {
    echo '<option value="';
    echo get_term_link(intval($term->term_id),$taxonomy);
    echo '">' . "{$term->name}</option>";
  }
  echo "</select>";
}

Vous pouvez mettre the_taxonomy_dropdown() dans le fichier functions.php de votre thème et l'appeler d'un des fichiers de modèle de votre thème comme ceci:

<?php the_taxonomy_dropdown('name of taxonomy'); ?>

Remarquez que je ne wp_dropdown_categories() utiliser parce qu'il définit les valeurs de <option> à term_id au lieu de permalien du terme. Vous avez besoin de permalien afin de mettre la window.location.href à l'extrémité client. Si nous avions utilisé wp_dropdown_categories() il a ajouté aurait plus de complexité; il aurait fallu émettre une requête HTTP GET avec term_id à une page sur le serveur qui rediriger vers le permalien du terme. Mais il est beaucoup plus facile de construire nous-mêmes <select> HTML comme je l'ai fait (et il est plus peformant, car il ne prend pas une requête HTTP supplémentaire.)

Bien sûr, assurez-vous de se rappeler wp_enqueue_script() jQuery dans un crochet 'init', également dans le fichier functions.php de votre thème:

add_action('init','jquery_init');
function jquery_init() {
  wp_enqueue_script('jquery');
}

Autres conseils

Je regardais ce problème aujourd'hui encore, qui est l'élément déroulant retourné par les valeurs des options de réglage de wp_dropdown_categories() à l'ID du terme ..

Maintenant, tout ce qui rend le menu déroulant un peu inutile pour dropdowns filtre ou menus de saut, il est effectivement possible de rejiggle la JS utilisé de sorte qu'il fonctionne « comme est » ...

Voici un exemple de base, qui est basé sur le code affiché ci-dessus.

function the_taxonomy_dropdown( $taxonomy = '', $query_var = '' ) {

    if( empty( $taxonomy ) )
        return;

    if( empty( $query_var ) )
        $query_var = $taxonomy;

    $select_id = "{$taxonomy}-dropdown";
    $url_base = get_bloginfo('url') . "/$query_var/";
    ?>

    <script type="text/javascript">
    jQuery(document).ready(function($){
        $("select#<?php echo $select_id; ?>").change(function(){
            var term = this.options[this.selectedIndex].text;
            window.location.href = "<?php echo $url_base; ?>" + term;
        });
    });
    </script>

    <?php
    wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'id' => $select_id ) );
}

NOTE:. Cet exemple JS suppose que vous utilisez jolies permaliens

Si votre taxonomie utilise une requête var qui diffère de la limace de taxonomie vous passez dans la fonction, il suffit d'ajouter la requête var comme second paramètre ..

the_taxonomy_dropdown( 'post_tag', 'tag' );

S'il vous plaît noter que ceci est juste un exemple pour vous montrer comment contourner le problème avec taxonomies wp_dropdown_categories et personnalisés en modifiant la JS.

Aussi pour référence, il y a un billet ici qui était dû à un patch. http://core.trac.wordpress.org/ticket/13258

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top