Всем привет!
Есть необходимость сделать разделение ленты по датам! У меня в шаблоне есть цикл вывода записей ленты:
<?php
global $DateControl; /*ПРОБУЮ ГЛОБАЛЬНУЮ ПЕРЕМЕННУЮ*/
class td_module_8 extends td_module {
function render() {
ob_start();
$title_length = $this->get_shortcode_att('m8_tl');
date_default_timezone_set('Europe/Kiev');
$DateNow = date("d.m.Y");
//$DateControl = "1"; ЕСЛИ ТУТ ДЕЛАТЬ ПРИСВОЕНИЕ - ПРИСВАИВАЕТ
$DateNews = $this->get_date();
?>
<div class="<?php echo $this->get_module_classes();?>">
<div class="item-details">
<?php //dsy даты
if($this->get_date() != $DateControl ){ //ЭТО РАБОЧАЯ ЛОГИКА, ЕСЛИ ДАТА ТЕКУЩЕГО ПОСТА ОТЛИЧАЕТСЯ ОТ КОНТРОЛЬНОЙ ДАТЫ (DateControl - ПРИСВАИВАЕМ В КОНЦЕ ЦИКЛА, И ВОТ ПРИСВОЕНИЕ НИЖЕ, ОНО НЕ РАБОТАЕТ), ТО СТАВИТ ДАТУ НОВОГО ДНЯ
echo $this->get_date();
}
?>
<?php //DSY ВАЖНОСТЬ
$i = get_field( "important-news", $this->post->ID );
//$icon = '<img src= ' + get_field( "img-icon", $this->post->ID ) + '>';
$icon = get_field( "img-icon", $this->post->ID ) ;
switch ($i) {
case null:
echo $this->get_title($title_length, $icon);
break;
case "important":
echo $this->get_titleImportant($title_length, $icon);
break;
case "importanthard":
echo $this->get_title_very_Important($title_length, $icon);
break;
}
?>
<?php /* echo $this->get_image('td_324x235'); */ ?>
<div class="td-module-meta-info">
<?php if (td_util::get_option('tds_category_module_8') == 'yes') { echo $this->get_category(); }?>
<?php echo $this->get_author();?>
<?php echo $this->get_date();?>
<?php /*echo get_the_time('', $this->post->ID ); */?>
<?php echo $this->get_comments();?>
</div>
</div>
<?php echo $this->get_quotes_on_blocks();?>
<?php
$DateControl = $this->get_date(); // ВОТ ТУТ ЗАГВОЗДКА, ПРИСВОЕНИЕ НИГДЕ НЕ РАБОТАЕТ, ТОЛЬКО В ВЕРХНЕЙ ЧАСТИ КОДА, А МНЕ ПРИСВАИВАТЬ ДАТУ НАДО В КОНЦЕ КАЖДОЙ ИТЕРАЦИИ ЦИКЛА
?>
</div>
<?php return ob_get_clean();
}
}
В ИТОГЕ должно получиться:
20/07/2018
12:00 новость вава в
12:40 новость вава в вава
18:00 новость вава в ывывыв
19/07/2018
12:00 новость вава в
12:40 новость вава в вава
18:00 новость вава в ывывыв
18/07/2018
12:00 новость вава в
12:40 новость вава в вава
18:00 новость вава в ывывыв
UPD 1:
Я кажется понял. $DateControl всегда имеет первичное значение, которое задается при объявлении, либо нулевое значение если оно не задается, потому что при каждом выводе записи (при каждом цикле) оно создается заново. Значение что присваиваю в конце просто не сохраняется.
UPD 2:
Чтобы переменная сохраняла значение добавил static.
Но теперь почему то условный оператор не работает:
$DateNews = $this->get_date();
static $DateControl ;
if( $DateControl != $DateNews ){
echo 'DateControl != DateNews </br></br>';
echo $DateControl;
}
echo 'Обе переменные вне</br>';
echo $DateControl;
echo $this->get_date();
//echo $DateNews;
Добавил вывод переменных, чтобы видеть них содержание, картина:
DateControl != DateNews — тут же даты равны!, а блок условного оператора срабатывает
23.07.2018
Обе переменные вне
23.07.2018
23.07.2018
UPD: 3
разобрался, оказывается $this->get_date() брала не просто дату, а:
<time class=»entry-date updated td-module-date» datetime=»2018-07-23T23:22:53+03:00″>23.07.2018</time>
визуально в браузере я вижу чисто дату, а в исходнике совсем другое. Теперь все сравнивает и все красиво -
Всем спасибо