Filterung mehrerer Tag-Clouds

Ich schreibe ein Plugin, das einen benutzerdefinierten Post-Typ und zwei zugehörige benutzerdefinierte Taxonomien erstellt. Die Liste / Archivseite des benutzerdefinierten Beitragstyps sollte nach Begriffen in einer oder beiden Taxonomien gefiltert werden können, dh nicht nur nach einem Taxonomiebegriff. Die Filter sollten als zwei separate Tag-Clouds angezeigt werden.

Hat jemand Erfahrung mit der Implementierung dieser functionalität und kann geeignete Plugins empfehlen?

Solutions Collecting From Web of "Filterung mehrerer Tag-Clouds"

Sie benötigen dazu kein vorgefertigtes Plugin oder Sie können Ihr eigenes Slim-Plugin erstellen. So würde ich das Problem angehen:

  1. Sie müssen die App an einen bereits ausgewählten Filter erinnern und alle Filterwerte jedes Mal weitergeben, wenn Sie Ihre Auswahl ändern.
  2. Daher ist Ihre sicherste Wette, ein Formular mit so vielen Boxen zu erstellen, wie die Taxonomien, die Sie filtern möchten.
  3. Sie werden diese Felder mit allen Ihren Begriffen ausfüllen und dann das Formular ausblenden. Der value s entspricht den Slugs des Begriffs.
  4. Sie wp_tag_cloud dann eine Standard-Begriffswolke mit wp_tag_cloud und wp_tag_cloud sie mithilfe von JavaScript an die verborgenen wp_tag_cloud an.
  5. Jedes Mal, wenn Sie auf den Link in der Cloud klicken, ändern Sie den entsprechenden -Boxfilter und senden das Formular ab.
  6. Wenn das Formular $_GET wird, werden die Filtereinstellungen von $_GET und die Posts mit der new WP_Query abgefragt und gefiltert.
  7. Sie werden die abgefragten Posts anzeigen. Einfach!

Im Folgenden finden Sie eine Beispielimplementierung. Sie können so viele Taxonomien auflisten, wie Sie möchten. Stellen Sie sicher, dass Sie jQuery geladen haben, bevor Sie versuchen, es zu verwenden:

 < ?php // List all taxonomies you want to bind $taxonomies = array( 'genre', 'writer' ); // Creates the supplementary $genres_list, $writers_list, ... taxonomies holding all their terms foreach( $taxonomies as $taxonomy ) ${$taxonomy . 's_list'} = get_terms( $taxonomy, array() ); ?>  
< ?php foreach( $taxonomies as $taxonomy ): ?> < ?php endforeach; ?>
< ?php // Display the tag clouds for all taxonomies foreach( $taxonomies as $taxonomy ) { $cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) ); // Add the taxonomy data to each link $cloud = preg_replace( '~>([^< ]+)<~U', ' data-taxonomy="' . $taxonomy . '">$1< ', $cloud ); echo $cloud; } ?> < ?php // Construct WP_Query args, change as you see fit $args = array( 'post_type' => 'post', 'posts_per_page' => -1 ); // Creates the WP_Query that filters only the posts we want foreach( $taxonomies as $taxonomy ) if ( isset( $_GET[$taxonomy . '_filter'] ) and (bool) $_GET[$taxonomy . '_filter'] === true ) $args = array_merge( $args, array( $taxonomy => $_GET[$taxonomy . '_filter'] ) ); $filtered_posts = new WP_Query( $args ); // List filtered posts while( $filtered_posts->have_posts() ): $filtered_posts->the_post(); ?>
< ?php echo '

' . get_the_title() . ''; the_content(); ?>

< ?php endwhile;