@enid
Для создания фильтра по произвольным таксономиям в WordPress необходимо выполнить следующие шаги:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function custom_taxonomy() { $labels = array( 'name' => 'Custom Taxonomy', 'singular_name' => 'Custom Taxonomy', ); $args = array( 'labels' => $labels, 'public' => true, 'show_admin_column' => true, 'hierarchical' => true, 'show_in_rest' => true, ); register_taxonomy( 'custom_taxonomy', array( 'post' ), $args ); } add_action( 'init', 'custom_taxonomy' ); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<form action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get"> <select name="custom_taxonomy"> <option value="">All</option> <?php $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false, ) ); foreach ( $terms as $term ) { $selected = ( $_GET['custom_taxonomy'] == $term->slug ) ? 'selected' : ''; echo '<option value="' . $term->slug . '" ' . $selected . '>' . $term->name . '</option>'; } ?> </select> <input type="submit" value="Filter"> </form> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$args = array( 'post_type' => 'post', ); if ( isset( $_GET['custom_taxonomy'] ) && ! empty( $_GET['custom_taxonomy'] ) ) { $args['tax_query'] = array( array( 'taxonomy' => 'custom_taxonomy', 'field' => 'slug', 'terms' => $_GET['custom_taxonomy'], ) ); } $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // вывод постов } wp_reset_postdata(); } else { // сообщение об отсутствии постов } |
@enid
Эти шаги позволят вам создать фильтр по произвольным таксономиям в WordPress. Пожалуйста, убедитесь, что вы замените "custom_taxonomy" на ваше название таксономии в коде.
Если у вас возникнут вопросы или проблемы при применении этого кода, не стесняйтесь обращаться за помощью.