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

Просмотр 14 ответов — с 16 по 29 (всего 29)
  • а что не так с классом или кодом который, поможете? пожалуйста

    а что не так с классом или кодом который

    Класс вставлен не как атрибут тега, а как простой текст. То есть, не туда.

    Что с кодом который — без понятия, я Ваш код не вижу.

    И еще, похоже, Вы что-то вставили в виндовой кодировке.

    screenshot

     $args = array(
      'posts_per_page' => $number,
      'ignore_sticky_posts' => 1, // не выводить закреплённые записи, 0 - выводить
      'cat' => $exclude
     );
     query_posts( $args );
     $checked = true; // перед циклом переключатель включен
     date_default_timezone_set('Europe/Kiev'); // устанавливаем правильную зону
     $now = date('d.m.Y',time()); // узнаём сегодняшний день
     $comparedate = $now; // перед циклом дата для сравнения установлена текущая
     while ( have_posts() ) : the_post();
      $class = ''; // обнуляем переменную для класса выделенного материала
      $theid = get_the_ID(); // ID материала заносим в переменную
    // Разбивка на дни. Если не нужно отличать дни написания материалов, удалите следующие 8 строк
      $posted = get_the_time( 'd.m.Y', $theid ); // узнаём, в какой день написан пост
      $checked = ( strtotime($posted) < strtotime($comparedate) ) ? false : true; // выключить переключатель, если дата публткации давнее даты для сравнения
      if ( strtotime($posted) < strtotime($comparedate) ) $yesterday = true; // если материал написан вчера
      if ( $yesterday && !$checked ) { // если это вчера и переключатель не положительный ?>
    
           <div class="newsfeedtitle">
    
             <?php if ( get_the_time('d.m.Y', $theid) == date('d.m.Y') ) $theday = 'Сьогодні';
             elseif ( get_the_time('d.m.Y', $theid) == date('d.m.Y', strtotime('-1 day')) ) $theday = 'Вчора';
             else $theday = get_the_time('d.m.Y', $theid);
             echo $theday; ?>
    
           </div>
    
      <?php }
    // конец разбивки на дни
      $tag_ids = wp_get_post_tags( $theid, array( 'fields' => 'ids' ) ); // получаем ID всех тегов поста
      $class = ( !empty( $highlight ) && in_array( $highlight, $tag_ids ) ) ? ' class="important"' : '' ; ?>
    	   	<?php
    		$terms = wp_get_post_terms( $theid,'label' );
    		$styles = '';
    		if( $terms && ! is_wp_error($terms) ){
    			foreach( $terms as $term ){
    				$styles .= ' ' . $term->slug . ' '; 
    			}
    		}
    		$class = ( strlen($class) > 0 ) ? mb_substr($class, 0, strlen($class)-1) . $styles . '"' : ' class="' . $styles . '"';
    		?>
    <?php
    $terms = wp_get_post_terms( $theid,'label' ); // получить список Видов материала, выбранных в новости
    $icons = '';
    if( $terms && ! is_wp_error($terms) ){
     foreach( $terms as $term ){
      switch ($term->slug) {
       case 'important': $icons = '<i class="fa fa-warning"></i> '; break;
       // иконки берём здесь: http://fontawesome.io/cheatsheet/
       case 'video': $icons = '<i class="fa fa-video-camera"></i> '; break;
       case 'breaking': $icons = '<i class="fa fa-flash"></i> '; break;
       case 'photo': $icons = '<i class="fa fa-photo"></i> '; break;
       case 'exclusive': $icons = '<i class="fa fa-check-circle"></i> '; break;
       default: $icons = '';
      }
     }
    }
    ?>
     <?php echo $class ?>
      <?php if ($time) { ?><time class="newsfeedtime" datetime="<?php the_time('Y-m-d') ?>"><?php echo get_the_time( 'G:i', $theid ) ?></time><?php } ?>
      <a class="newsfeed" href="<?php echo get_permalink( $theid ) ?>" title="Читать: <?php the_title_attribute(); ?>"><?php the_title(); ?></a><hr>
    
     <?php $comparedate = $posted; // перед окончанием цикла дату для сравнения уравниваем с датой публикации
     endwhile;
     wp_reset_postdata(); // сброс параметров запроса к базе данных
    }
    
    add_action( 'init', 'build_taxonomies', 0 );
    function build_taxonomies() {
        register_taxonomy(
    		'label', // название таксономии на латинице
    		'post',
    		array(
    			'hierarchical' => true, // на подобие таксономии рубрик, удобно
    			'label' => 'Вид матеріалу', // название таксономии
    			'query_var' => true,
    			'rewrite' => true
    		)
    	);
    }

    пробовал вставить в ссылку тот код, тоже не помогло

    • Ответ изменён 2 года, 8 месяцев назад пользователем bugsbunnny.

    Тоже самое с иконками, я видимо не туда все вставляю, подскажите как правильно вставлять, куда именно имеется ввиду

    И еще хотел спросить, Юрий, ваш плагин http://blog.portal.kharkov.ua/2008/05/10/auto_more_3/ он может добавлять читать далее к уже существующим постам?

    меняем

    
     <?php echo $class ?>
      <?php if ($time) { ?><time class="newsfeedtime" datetime="<?php the_time('Y-m-d') ?>"><?php echo get_the_time( 'G:i', $theid ) ?></time><?php } ?>
      <a class="newsfeed" href="<?php echo get_permalink( $theid ) ?>" title="Читать: <?php the_title_attribute(); ?>"><?php the_title(); ?></a><hr>
    

    на

    
    <div <?php echo $class ?>>
      <?php if ($time) { ?><time class="newsfeedtime" datetime="<?php the_time('Y-m-d') ?>"><?php echo get_the_time( 'G:i', $theid ) ?></time><?php } ?>
      <a class="newsfeed" href="<?php echo get_permalink( $theid ) ?>" title="Читать: <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
    </div><hr>
    

    или типа того в зависимости от того, что хотите получить на выходе.

    auto_more_3/ он может добавлять читать далее к уже существующим постам?

    Он к постам (в понимании «записи в БД») ничего не добавляет, ни к старым, ни к новым. Все делается «на лету», после получения массива $posts из базы и перед обработкой в Цикле. То есть, ни включение, ни отключение плагина никак не влияет на содержимое БД.

    А как сделать чтобы здесь был класс <a class="newsfeed" href="<?php echo get_permalink( $theid ) ?>" title="Читать: <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
    Я просто хочу выделять цветом и жирностью текст ссылки, а время должно остаться таким же

    Я просто хочу выделять цветом и жирностью текст ссылки

    Можно так:
    <a class="newsfeed <?php echo $class; ?>" ...
    Но тогда надо переделать ту часть, которая формирует $class так, чтобы там было только имя класса, без class= и кавычек.

    А можно и так
    div.vazhlive a { color ...
    ничего не переделывая
    http://htmlbook.ru/samcss

    А можно и так
    div.vazhlive a { color …
    ничего не переделывая

    кстати об этом не подумал, спасибо большое за подсказку

    а по поводу плагина, у меня просто в блоге выводится весь текст статьи (сейчас я поменял excerpt) и вообще описания нету, из-за того что его нету, как можно решить, чтобы выводилось например только 15 слов?

    сейчас я поменял excerpt

    Логично.

    чтобы выводилось например только 15 слов?

    add_filter( 'excerpt_length', function() { return 15; });
    

    Юрий опять к вам за помощью, почему то у меня пост который сегодня был опубликован, слетает футер, его нету, не понимаю в чем проблема
    https://gyazo.com/b960fbac34a0e11ea87792e3cb69678e

    это либо в коде этом проблема либо он конфликтует с темой, я не понимаю((

    Проблему вижу. Пытался посмотреть html страницы и понял, что это я не осилю.

    это либо в коде этом проблема либо он конфликтует с темой, я не понимаю((

    Отключите (закомментируйте) код или его часть и посмотрите, что получится.

    я убрал код разбивки на дни но ничего не изменилось((
    странно, если поставить дату поста раньше последней добавленной (21.08) то все вроде как нормально, но если сразу днем позднее то нету.
    Я сайт переносил и соответственно все записи тоже(

Просмотр 14 ответов — с 16 по 29 (всего 29)
  • Тема «Вывод постов как на новостных сайтах» закрыта для новых ответов.