Поддержка Проблемы и решения Доработка кода похожих записей

  • Решено dmitriy88

    (@dmitriy88)


    Пытаюсь доработать код похожих записей из данной статьи
    http://seo-mayak.com/sozdanie-bloga/obxodimsya-bez-plaginov/poxozhie-zapisi-stati-bez-plagina-na-wordpress.html

    Мне нужно, чтобы в похожие записи не выводились посты, у которых прошло 3 часа с даты публикации.
    После строки $my_query->the_post();
    добавляю такой код

    $currentdate_unix = date("U") + 10800;
    $expirationdate_unix = get_the_date("U") + 10800;
    if ( $expirationdate_unix > $currentdate_unix ) {}

    Но в этом случае никакие записи не выводятся. Подскажите, куда копать, или может я не в то место свой код вставляю.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Подскажите, куда копать

    Может стоит просто подобрать плагин?

    Может стоит просто подобрать плагин?

    Ничего подходящего не нашел.

    в параметры цикла надо добавить:

    
    'date_query'    => array(
         array(
             'column' => 'post_date_gmt',
             'before' => '3 hours ago'
         )
     )
    

    Не срабатывает, все равно все записи выводятся.

    Для примера. На главной у меня такой цикл используется

    <?php $currentdate_unix = date("U") + 10800; ?>			
    			<?php while ( have_posts() ) : the_post(); ?>		
    <?php
    $expirationdate_unix = get_the_date("U") + 10800;	
    if ( $expirationdate_unix > $currentdate_unix ) {
    
    } ?>
    			<?php endwhile; ?>

    Здесь все работает как надо, но вот с похожими записями не могу разобраться.

    весь код ваших похожих записей приведите.

    Модератор Yuri

    (@yube)

    Попробуйте

    $expirationdate_unix = $my_query->get_the_date("U") + 10800;
    

    Но так делать, как делаете Вы — неправильно. Фильтрация должны осуществляться в выборке, а не на выводе. Наличие статьи в интернете не может служить оправданием. Интернет — свободная территория, где каждый пишет что хочет и как хочет. Если следовать всем советам, долго не проживешь 😉

    Вот полный код

    <?php if (in_category(4)) {	?>
    <div class="other-events">				
    <h3>Другие записи</h3>
    <?php	
     $categories = get_the_category($post->ID);
    if ($categories) {
     $category_ids = array();
     foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
     $args=array(
     'category__in' => $category_ids, // Сортировка производится по категориям
     'post__not_in' => array($post->ID),
     'showposts'=>6, //Количество выводимых записей
     'orderby' => date(dmY), //Сортировка по дате
     'order' => ASC, //Сортировка по возрастанию
     'caller_get_posts'=>1); // Запрещаем повторение ссылок
     $my_query = new wp_query($args);
     if( $my_query->have_posts() ) { ?> 
     <?php
            while ($my_query->have_posts()) {
                $my_query->the_post();
            ?>
    <?php $currentdate_unix = date("U") + 10800;
    $expirationdate_unix = $my_query->get_the_date("U") + 10800;
    if ( $expirationdate_unix > $currentdate_unix ) { ?>
    <div class="event">		
            <a class="link" href="<?php echo wp_make_link_relative( get_permalink() ); ?>">
            <span class="date"><?php echo dateToRussian(get_the_date(' j F')).', '.get_the_time(); ?></span>
            <span class="name"><?php the_title(); ?></span>
            <span class="status"></span>
            </a>
    </div>
    <?php } ?>
            <?php
            } ?>
    
            <?php
        }
    wp_reset_query();
    } ?>
    </div> <?php }
    ?>

    Никакие записи при этом не выводятся, только заголовок.

    Есть еще какие-нибудь идеи?

    Помогите с задачей, до сих пор мучаюсь над ее решением.

    до сих пор мучаюсь над ее решением.

    https://ru.wordpress.org/plugins/flexible-posts-widget/ и см «Хуки плагина»

    Делаю выборку записей по дате, но, как я понял, на сервере время по Гринвичу, и записи текущего дня показываются вплоть до 3-х часов ночи. Как сделать так, чтобы записи следующего дня начинали отображаться с 0 часов?

    <?php	
     $categories = get_the_category($post->ID);
     $today = getdate();
    if ($categories) {
     $category_ids = array();
     foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
     $args=array(
     'category__in' => $category_ids, // Сортировка производится по категориям
     'post__not_in' => array($post->ID),
     //'showposts'=>6, //Количество выводимых записей
     'year' => $today["year"],
     'monthnum' => $today["mon"],
     'day' => $today["mday"],
     'orderby' => date(dmY), //Сортировка по дате
     'order' => ASC, //Сортировка по возрастанию
     'caller_get_posts'=>1); // Запрещаем повторение ссылок
     $my_query = new wp_query($args);
     if( $my_query->have_posts() ) { ?> 
     <?php
            while ($my_query->have_posts()) {
                $my_query->the_post();
            ?>
    Автор dmitriy88

    (@dmitriy88)

    Все еще в поисках решения проблемы.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «Доработка кода похожих записей» закрыта для новых ответов.