innatedev
  • 0
Новичок

Пользовательский запрос WordPress

  • 0

У меня есть сообщения, которые используют настраиваемое поле для даты начала и даты окончания. query_posts возвращает массив сообщений, которые существуют в категории, которую я фильтрую. Как мне запрашивать сообщения, используя это настраиваемое поле, которое имеет дату, т.е. 11.03.2010, а не полный массив. Пагинация работает с полным массивом, поэтому она возвращает все сообщения. Я могу использовать if else, чтобы показывать только более новые сообщения, чем сегодня, тогда разбиение на страницы не работает. Должен ли я создавать собственный запрос mysql?

Share
  1. <?php
    
     $querystr = "
        SELECT wposts.* 
        FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
        WHERE wposts.ID = wpostmeta.post_id 
        AND wpostmeta.meta_key = 'date_field' 
        AND wpostmeta.meta_value = '03/11/2010' 
        AND wposts.post_status = 'publish' 
        AND wposts.post_type = 'post' 
        ORDER BY wposts.post_date DESC
     ";
    
     $pageposts = $wpdb->get_results($querystr, OBJECT);
    
     ?>
    

    Затем вы получите доступ к $pageposts как к объекту

    • 0
  2. Вы можете создать собственный запрос, используя следующие фильтры query_vars, posts_join, posts_where, posts_groupby . вот ссылка кодекса на пользовательские запросы. Некоторые примеры перечислены там для справки.

    • 0
  3. Вы можете сделать это с WP_Query помощью meta_query .

    $my_query = new WP_Query( array(
        'meta_query' => array(
            array(
                'key' => 'date_field',
                'value => '03/11/2010',
                'compare' => '='
            )
        )
    ) );
    

    По умолчанию он будет искать опубликованные сообщения.

    Я бы также предложил хранить дату в формате гггг/мм/дд. Сортировка по этому полю будет намного проще, если вы сделаете это так.

    • 0

Оставить ответ

You must login to add an answer.