@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" на ваше название таксономии в коде.
Если у вас возникнут вопросы или проблемы при применении этого кода, не стесняйтесь обращаться за помощью.