@Darkwebhacker

Как написать фильтр?

Не работает фильтр, использую плагин pods, произвольные типы записи.

<?php
/*
 Template Name: Horses
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

$filter = $_GET;
//var_dump($filter);

$countries = get_terms([
        'taxonomy' => 'strana',
    'hide_empty' => false,
]);

$ages = get_terms([
    'taxonomy' => 'vozrast',
    'hide_empty' => false,
]);

get_header(); ?>

<?php if ( astra_page_layout() == 'left-sidebar' ) : ?>

    <?php get_sidebar(); ?>

<?php endif ?>

<div id="primary" <?php astra_primary_class(); ?>>
    <h3>Лошади</h3>
     <p></p>
     <div class="form_wrapper" style="padding: 20px">
    <form>
        <label>Кличка</label>
        <input type="text" name="hn" style="width: 350px;"/>
        <label>Страна</label>
        <select name="country">
            <option value="0">Все</option>
            <?php foreach($countries as $country) { ?>
                <option value="<?php echo $country->term_id; ?>"><?php echo $country->name; ?></option>
            <?php } ?>
        </select>
        <label>Пол</label>
        <select name="sex">
            <option value="0">Любой</option>
            <option value="name">Жеребец</option>
            <option value="age">Кобыла</option>
        </select>
        <label>Возраст</label>
        <select name="age">
            <option value="0">Любой</option>
            <?php foreach($ages as $age) { ?>
                <option value="<?php echo $age->term_id; ?>"><?php echo $age->name; ?></option>
            <?php } ?>
        </select>
        <br>
        <label>Сортировать по </label>
        <select name="sort_type">
            <option value="name">Кличка</option>
            <option value="age">Возраст</option>
            <option value="sex">Пол</option>
            <option value="country">Страна</option>
        </select>
        <label>Порядок сортировки </label>
        <select name="sort_order">
            <option value="name">По возрастанию</option>
            <option value="age">По убыванию</option>
        </select>
        <br>
        <button type="submit">Фильтр</button>
    </form>
    </div>
    <div class="form_wrapper" style="padding: 20px;">





<?php
$args = array(
    'post_type' => 'horse',
    'publish' => true,
    //'paged' => get_query_var('paged'),
);

query_posts($args);

if ( have_posts() ) { ?>
    <table>
        <thead>
        <tr>
            <th>Кличка</th>
            <th>Возраст</th>
            <th>Пол</th>
            <th>Отец / Мать</th>
            <th>Страна</th>
        </tr>
        </thead>
        <tbody>
<?php
    while( have_posts() ){
        the_post();

        ?>
        <tr>
            <td><a href="<?php echo the_permalink(); ?>"><?php the_title(); ?></a></td>
            <td>
                <?php
                $terms = get_the_terms( $post->ID, 'vozrast' );
                if($terms) {
                    echo $terms[0]->name;
                }
                ?>
            </td>
            <td>
                <?php
                $terms = get_the_terms( $post->ID, 'pol' );
                if($terms) {
                    echo $terms[0]->name;
                }
                ?>
            </td>
            <td>
                <?php $father =get_post_meta($post->ID, 'father_horse', true) ;
                if(isset($father['post_title'])){
                    echo '<a href="'.get_permalink($father['ID']).'">'.$father['post_title'].'</a>';
                }
                ?>
                &nbsp;/&nbsp;
                <?php $mother = get_post_meta($post->ID, 'mother_horse', true);
                if(isset($mother['post_title'])) {
                    echo '<a href="'.get_permalink($mother['ID']).'">'.$mother['post_title'].'</a>';
                }
                ?>
            </td>
            <td>
            <?php
            $terms = get_the_terms( $post->ID, 'strana' );
            if($terms) {
                echo $terms[0]->name;
            }
            ?>
            </td>
        </tr>
<?php } ?>

        </tbody>
    </table>
<?php } else {
    echo "<h2>Записей нет.</h2>";
}
    ?>
</div>

</div><!-- #primary -->

<?php if ( astra_page_layout() == 'right-sidebar' ) : ?>

    <?php get_sidebar(); ?>

<?php endif ?>

<?php get_footer(); ?>


Что тут не так? Почему фильтр не работает? Как можно сделать так что бы обновлялась только таблица а не вся страница и + добавить автодобавление списка в строку кличка
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
У вас совсем отсутствует функционал фильтра в коде примере. Есть только форма выбора опций.
Вам потребуется добавить ajax функцию, которая будет отдавать, например, новый , которым можно заменять контент внутри таблицы. Описание как подобное можно организовать можно найти тут: https://misha.agency/wordpress/filtryi-zapisey-i-t...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы