У меня есть рубрика, в которой много постов. Посты начинаются, к примеру, с "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
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 за идею добавить нужную дату через доп.поля. с кодом выше теперь всё работает как надо;)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужен совет по обработке сравнительно большого количества данных
Имеется таблица, которая отрисовывается горизонтальноМне нужно переносить оба ряда на новую строку, если в ряде больше 7 ячеек
При импорте товаров в WC столкнулся со следующей проблемой: необходимо создать на новом сайте атрибуты и их значения для товаровВся сложность...