Ajax-Kategoriefilter

Ich weiß, das ist eine große Frage für euch, aber ich kann das nicht herausfinden.

Ich habe diese Seite gefunden: http://www.bobz.co/ajax-filter-posts-tag/#comment-28112

Es zeigt, wie ein dynamischer Filter für Post-Tags erstellt wird.

Ich wollte es in Post-Kategorien ändern, aber ich kann nicht scheinen, dass es funktioniert.

Ich habe diesen Code in meine functions.php gestellt

function ajax_filter_posts_scripts() { // Enqueue script wp_register_script('afp_script', get_stylesheet_directory_uri() . '/js/ajax-filter-posts.js', false, null, false); wp_enqueue_script('afp_script'); wp_localize_script( 'afp_script', 'afp_vars', array( 'afp_nonce' => wp_create_nonce( 'afp_nonce' ), // Create nonce which we later will use to verify AJAX request 'afp_ajax_url' => admin_url( 'admin-ajax.php' ), ) ); } add_action('wp_enqueue_scripts', 'ajax_filter_posts_scripts', 100); // Script for getting posts function ajax_filter_get_posts( $taxonomy ) { // Verify nonce if( !isset( $_POST['afp_nonce'] ) || !wp_verify_nonce( $_POST['afp_nonce'], 'afp_nonce' ) ) die('Permission denied'); $taxonomy = $_POST['taxonomy']; // WP Query $args = array( 'category_name' => $taxonomy, 'post_type' => 'post', 'posts_per_page' => 10, ); // If taxonomy is not set, remove key from array and get all posts if( !$taxonomy ) { unset( $args['category_name'] ); } $query = new WP_Query( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> 

<a href="https://wordpress.stackexchange.com/questions/213986/ajax-category-filter/">

No posts found

<?php endif; die(); } add_action('wp_ajax_filter_posts', 'ajax_filter_get_posts'); add_action('wp_ajax_nopriv_filter_posts', 'ajax_filter_get_posts');

und dann habe ich in meiner eigentlichen Seitenvorlage diesen Code eingefügt:

 //in my template file  'post', 'posts_per_page' => 10, ); $query = new WP_Query( $args ); function tags_filter() { $tax = 'category'; $terms = get_terms( $tax ); $count = count( $terms ); if ( $count > 0 ): ?>  <?php endif; } 

Wenn ich meine Seitenvorlage lade, lädt die Seite meinen Inhalt und zeigt Kategoriefilter-Schaltflächen an, aber wenn ich auf eine der Schaltflächen klicke, wird “Keine Beiträge gefunden” angezeigt.

Dies führt mich zu der Annahme, dass ich mit meiner functionsdatei etwas falsch gemacht habe, aber ich kann es nicht herausfinden.

Kann jemand etwas sehen, was ich hier falsch gemacht habe?

Solutions Collecting From Web of "Ajax-Kategoriefilter"

Ich bin mir nicht sicher, ob Sie das getriggers haben oder nicht, aber ich suchte nach einer Möglichkeit, dies innerhalb einer Seite einzubetten und Beiträge nach Kategorien zu filtern.

Ich habe das funktioniert, so dass es alle Kategorien und die verwandten Beiträge anzeigt. Setzen Sie das in functions.php

 function ajax_filter_posts_scripts() { // Enqueue script wp_register_script('afp_script', get_template_directory_uri() . '/js/ajax-filter-posts.js', false, null, false); wp_enqueue_script('afp_script'); wp_localize_script( 'afp_script', 'afp_vars', array( 'afp_nonce' => wp_create_nonce( 'afp_nonce' ), // Create nonce which we later will use to verify AJAX request 'afp_ajax_url' => admin_url( 'admin-ajax.php' ), ) ); } add_action('wp_enqueue_scripts', 'ajax_filter_posts_scripts', 100); // Script for getting posts function ajax_filter_get_posts( $taxonomy ) { // Verify nonce if( !isset( $_POST['afp_nonce'] ) || !wp_verify_nonce( $_POST['afp_nonce'], 'afp_nonce' ) ) die('Permission denied'); $taxonomy = $_POST['taxonomy']; // WP Query $args = array( 'category_name' => $taxonomy, 'post_type' => 'post', 'posts_per_page' => 10, ); echo $taxonomy; // If taxonomy is not set, remove key from array and get all posts if( !$taxonomy ) { unset( $args['tag'] ); } $query = new WP_Query( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> 

< ?php the_title(); ?>

< ?php the_excerpt(); ?> < ?php endwhile; ?> < ?php else: ?>

No posts found

< ?php endif; die(); } add_action('wp_ajax_filter_posts', 'ajax_filter_get_posts'); add_action('wp_ajax_nopriv_filter_posts', 'ajax_filter_get_posts');

Fügen Sie das dann in Ihrer Seitenvorlage hinzu:

 < ?php $args = array( 'post_type' => 'post', 'posts_per_page' => 10, ); $query = new WP_Query( $args ); $tax = 'category'; $terms = get_terms( $tax ); $count = count( $terms ); if ( $count > 0 ): ?>  < ?php endif; if ( $query->have_posts() ): ?>  < ?php else: ?> 

No posts found

< ?php endif; ?>

Hoffnung, die hilft, Ihre Probleme zu lösen!

Im tags_filter ändern Sie diese $ tax = ‘post_tag’; zu dieser $ tax = ‘Kategorie’;

Dann ändere in der WP-Abfrage diese ‘tag’ => $ taxonomy, zu dieser ‘category’ => $ taxonomy,

functioniert gut für mich …