Intereting Posts
current_shortcode () – обнаружение используемого в настоящее время короткого кода Можем ли мы использовать одну установку WordPress для нескольких баз данных, доменов и каталогов контента Общая функциональность плагинов и тем Как включить jQuery и код JavaScript в метабокс? Создание заголовка видео в WordPress только на главной странице Как вы можете быть уверены, что записи авторов более 250 слов? Почему я не вижу pingbacks? как переместить блог wordpress на мой статический сайт save_post неправильно обрабатывает вызов функции с помощью php-класса Переместите все JS-файлы в нижний нижний колонтитул, верный путь как динамически изменять название страницы в wordpress в соответствии с значением URL Как изменить получателей и контент для комментариев по электронной почте для комментариев в настраиваемом типе сообщений? как включить простой файл jquery в плагин wordpress Сортировка заказов по индивидуальному заказу meta – Страница администрирования заказов Woocommerce Получить идентификатор сообщения после отправки сообщения переднего конца

Фильтр категории ajax

Я знаю, что это большой вопрос для вас, ребята, но я не могу понять это.

Я нашел эту страницу: http://www.bobz.co/ajax-filter-posts-tag/#comment-28112

он показывает, как сделать динамический фильтр для тегов сообщений.

Я хотел изменить его для публикации категорий, но я не могу заставить его работать.

Я поместил этот код в свои functions.php

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(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> <?php else: ?> <h2>No posts found</h2> <?php endif; die(); } add_action('wp_ajax_filter_posts', 'ajax_filter_get_posts'); add_action('wp_ajax_nopriv_filter_posts', 'ajax_filter_get_posts'); 

а затем в моем фактическом шаблоне страницы я ставлю этот код:

 //in my template file <?php $args = array( 'post_type' => '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 ): ?> <div class="post-tags"> <?php foreach ( $terms as $term ) { $term_link = get_term_link( $term, $tax ); echo '<a href="' . $term_link . '" class="tax-filter" title="' . $term->slug . '">' . $term->name . '</a> '; } ?> </div> <?php endif; } 

при загрузке моего шаблона страницы сайт загружает мой контент и показывает кнопки фильтра категорий, но когда я нажимаю любую из кнопок, возвращается «Нет сообщений».

Это заставляет меня думать, что я сделал что-то не так с моим файлом функций, но я не могу понять это.

Может ли кто-нибудь увидеть что-то, что я сделал здесь неправильно?

Не уверен, что вы решили это или нет, но я искал способ внедрить его в страницу и фильтровать сообщения по категориям.

Я получил эту работу, чтобы отображать все категории и связанные с ними сообщения. Поместите это в 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(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> <?php else: ?> <h2>No posts found</h2> <?php endif; die(); } add_action('wp_ajax_filter_posts', 'ajax_filter_get_posts'); add_action('wp_ajax_nopriv_filter_posts', 'ajax_filter_get_posts'); 

Затем добавьте это в свой шаблон страницы:

 <?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 ): ?> <div class="post-tags"> <?php foreach ( $terms as $term ) { $term_link = get_term_link( $term, $tax ); echo '<a href="' . $term_link . '" class="tax-filter" title="' . $term->slug . '">' . $term->name . '</a> '; } ?> </div> <?php endif; if ( $query->have_posts() ): ?> <div class="tagged-posts"> <?php while ( $query->have_posts() ) : $query->the_post(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> </div> <?php else: ?> <div class="tagged-posts"> <h2>No posts found</h2> </div> <?php endif; ?> 

Надеюсь, что поможет решить ваши проблемы!