WP - вывод 7 постов от актуальной даты

68
02 декабря 2021, 14:10

У меня есть рубрика, в которой много постов. Посты начинаются, к примеру, с "21 декабря 2019 года". Посты эти опубликованы заранее, но их нужно вывести на сайте так: сегодняшняя дата + 7 постов после нее. Остальные показывать не нужно.

У меня есть этот код:

class GoroskopController

{

static function get_data($parent_id, $number, $heading, $heading_color = 'dark')
{
    $loop = new \WP_Query(GoroskopModule::loop_args($parent_id, $number));
    if ($loop->have_posts()) :
        echo '<div class="goroskop-block mb30">';
        echo '<div class="block-heading-color-small -' . $heading_color . ' font-sans">' . $heading . '</div>';
        while ($loop->have_posts()) : $loop->the_post();
            $this_date = self::this_gor(get_the_title());
            include "templates/block.php";
        endwhile;
        wp_reset_query();
        echo ($parent_id == 156) ? '<div class="view-more font-sans"><a href="' . get_category_link($parent_id) . '">' . esc_html__('Смотреть все', 'grimple_core') . '</a></div>' : '';
        echo '</div>';
    endif;
}
static function now_date()
{
    $m = [
        'января' => '01',
        'февраля' => '02',
        'марта' => '03',
        'апреля' => '04',
        'мая' => '05',
        'июня' => '06',
        'июля' => '07',
        'августа' => '08',
        'сентября' => '09',
        'октября' => '10',
        'ноября' => '11',
        'декабря' => '12'
    ];
    return $m;
}
static function this_gor($title)
{
    $gor_date = explode(' ', $title);
    $m = self::now_date();
    $this_date = date('d.m.Y');
    $day = (mb_strlen($gor_date[0],'UTF-8') == 1) ? '0' . $gor_date[0] : $gor_date[0];
    $month = $gor_date[1];
    $year = $gor_date[2];
    foreach ($m as $key => $value) {
        if ($month == $key)
            $month = $value;
    }
    $sep = '.';
    $gor_out_date = $day . $sep . $month . $sep . $year;
    $this_gor = ($this_date == $gor_out_date) ? true : '';
    return $this_gor;
}

}

который берет из тайтла те же примерные "21 декабря 2019 года" и делает из них 21.12.2019 . и так со всеми.

И вот тут есть проблема, для вывода сегодняшнего поста + 7 после него, расчитаных кодом выше я использовал:

class GoroskopModule

{

static function loop_args($parent_id, $number)
{
    $args = [
        'cat' => $parent_id,
        'posts_per_page' => 7,
        'orderby' => 'ID',
        'order' => 'asc',
        'date_query' => array('after' => date('d.m.Y', strtotime('-2 days')) )
    ];
    return $args;
}

}

но он выводит 7 постов не основываясь на калькуляции первого кода. Надо чтобы это работало так http://prntscr.com/q3oxc2 а не так http://prntscr.com/q3oxnh

Answer 1
class GoroskopModule
{
static function loop_args($parent_id, $number)
{
$time = current_time( 'timestamp' ); 
$today = date('Ymd');
$args = array (
'post_status'            => 'publish', 
'orderby'                => 'meta_value', 
'meta_key'               => 'gor_date', 
'meta_value'             => $time, 
'meta_compare'           => '>=',
'meta_query' => array(
        array(
            'key' => 'gor_date',
            'value' => $today,
            'compare' => '>=',
        ),
    ),
'order'                  => 'ASC', 
'posts_per_page'         => 7,
);
    return $args;
}
}

спасибо Krya за идею добавить нужную дату через доп.поля. с кодом выше теперь всё работает как надо;)

READ ALSO
Аналог CRON на PHP

Аналог CRON на PHP

Да, google был просмотрелВозможно плохо, но всё таки: есть файлик sync

122
Передача файлов на удаленный сервер

Передача файлов на удаленный сервер

Нужен совет по обработке сравнительно большого количества данных

90
Перенос ряда в горизонтальной таблице

Перенос ряда в горизонтальной таблице

Имеется таблица, которая отрисовывается горизонтальноМне нужно переносить оба ряда на новую строку, если в ряде больше 7 ячеек

96
Где хранятся значения артибутов в бд?

Где хранятся значения артибутов в бд?

При импорте товаров в WC столкнулся со следующей проблемой: необходимо создать на новом сайте атрибуты и их значения для товаровВся сложность...

113