Пользовательский архив таксономии, показывающий все сообщения - PullRequest
0 голосов
/ 04 марта 2020

У меня есть пользовательский тип записи «Vacatures» с двумя пользовательскими таксономиями «type» и «locat ie». Я создал страницу архива для отображения всех сообщений, но теперь, когда я просматриваю ссылку для всех сообщений, относящихся к указанному c 'типу', он просто показывает все сообщения, например страницу архива.

Как я могу решить эту проблему, убедившись, что все еще могу заставить фильтры работать?

archive-vacatures. php:

<?php get_header(); ?>
<div class="jobs__banner">
    <h1><?php _e( 'VACATURES', 'ago' ) ?></h1>
</div>
<div class="vacatures__archief">
    <?php
    $types = get_terms([ 'taxonomy' => 'type' ]);
    $locations = get_terms([ 'taxonomy' => 'locatie']);
    $postsQuery = [
        'order'             => 'DESC',
        'post_type'         => 'vacatures',
        'posts_per_page'    => -1,
        'tax_query'         => []
    ];
    if(array_key_exists('type_id', $_GET) && $_GET['type_id']) {
        $postsQuery['tax_query'][] = [
            'taxonomy' => 'type',
            'field' => 'term_id',
            'terms' => [$_GET['type_id']]
        ];
    }
    if(array_key_exists('locatie_id', $_GET) && $_GET['locatie_id']) {
        $postsQuery['tax_query'][] = [
            'taxonomy' => 'locatie',
            'field' => 'term_id',
            'terms' => [$_GET['locatie_id']]
        ];
    }
    if(array_key_exists('query', $_GET) && $_GET['query']) {
        $postsQuery['s'] = $_GET['query'];
    }
    query_posts($postsQuery); ?>
    <form class="vacature__filter">
        <input type="text" name="query" placeholder="Search.." />
        <select name="type_id">
        <option value="">-- <?php _e( 'Alle types', 'ago' ) ?> --</option>
        <?php foreach($types as $type) {
            $selected = array_key_exists('type_id', $_GET) && $_GET['type_id'] == $type->term_id ? 'selected' : '';
            echo "<option value='{$type->term_id}' {$selected}>{$type->name}</option>";
        } ?>
    </select>
    <select name="locatie_id">
        <option value="">-- <?php _e( 'Alle locaties', 'ago' ) ?> --</option>
        <?php foreach($locations as $locatie) {
            $selected = array_key_exists('locatie_id', $_GET) && $_GET['locatie_id'] == $locatie->term_id ? 'selected' : '';
            echo "<option value='{$locatie->term_id}' {$selected}>{$locatie->name}</option>";
        } ?>
    </select>
    <button type="submit">Zoek</button>
</form>
<?php if ( have_posts() ) { ?>
    <?php
    while ( have_posts() ) {
        the_post();
        ?>
        <article id="vacature-<?php the_ID(); ?>" <?php post_class(); ?>>
            <a class="vacature__item" href="<?php the_permalink(); ?>">
                <h2 class="vacature__title"><?php the_title(); ?></h2>
                <h4 class="vacature__company"><?php echo get_field('vacature_bedrijf') ?> - <?php $terms = get_the_terms( $post->ID , 'type' ); $i = 1; foreach ( $terms as $term ) { $term_link = get_term_link( $term, 'type' ); if( is_wp_error( $term_link ) ) continue; echo $term->name; echo ($i < count($terms))? ", " : ""; $i++; } ?></h4>
                <h6 class="vacature__location"><?php $terms = get_the_terms( $post->ID , 'locatie' ); foreach ( $terms as $term ) { echo $term->name; } ?></h6>
            </a>
        </article>
        <?php
    }
} 
?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...