Intereting Posts
Показать предварительный загрузчик ajax для больших изображений в сообщениях Отключить модератор комментариев в многопользовательском режиме Как программно добавить пользователя в роль? Nav walker, bootstrap: отображает предметы третьего уровня под 2-м уровнем Как редактировать форму комментариев на сообщениях? Могу ли я использовать плагин для уникальной страницы на моем веб-сайте? get_post_title не работает на главной странице Изменить поведение «Вставить в сообщение» на основе метаданных приложения Как добавить правило rewrite для внешнего php-файла WP_Query, который фильтрует на основе пользовательского поля отношений Есть ли плагин, который заменит сообщение «Ошибка установления соединения с базой данных»? Пользовательский навигатор с различным выходом в зависимости от глубины Просмотр популярных сообщений Добавление / обновление переменных продуктов Настройщик тембров – скрыть / вычеркнуть настройки на основе других настроек

Установка раздела героя / всплеска в виде сообщения в блоге

У меня есть раздел героев на домашней странице моего блога, что я бы хотел стать главным сообщением, а затем еще несколько сообщений с разными стилями внизу, см. Ниже макет: расположение ,

Я не уверен, как реально подходить к этому, и вам нужно руководствоваться наилучшим образом, чтобы переносить это в WordPress. Вот код, который у меня есть в моем файле index.php . Мне удалось вывести сообщения ниже героя, но не уверен, как подойти к главному сообщению в разделе героя / всплеска.

 <div id="main"> <!-- hero starts here --> <div class="hero"> <div class="hero-wrapper"> <div class="article-info"> <p class="topic"><a href="">Culture</a></p> <h1 class="hero-title"><a href="">Title</a></h1> </div> </div> </div> <!-- Hero end here --> <div class="main-container"> <!-- Posts starts here --> <div class="posts"> <div class="posts__post"> <article> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <a class="posts__post--preview" href=""><img src="https://placeimg.com/470/310/tech" /></a> <a class="posts__post--tag" href=""><p>Motivation</p></a> <a class="posts__post--title" href="" ><h1>A Good Autoresponder, some more text here</h1></a> <p class="posts__post--meta"> 10 days ago</p> </article> <?php endwhile; else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> </div> </div> <!-- Posts ends here --> <!-- Main ends here --> 

Вещи, о которых я думаю:

  1. Что произойдет, если я добавлю новый главный пост? Будет ли подталкиваться предыдущий пост?

Solutions Collecting From Web of "Установка раздела героя / всплеска в виде сообщения в блоге"

Код ниже цикла через сообщения, чтобы найти сообщение с идентификатором == 1, затем распечатает его. Второй цикл показывает последние 6 сообщений (сообщение героя снова не будет показано из-за блока)

 <div id="main"> <!-- hero starts here --> <?php global $post; $args = array("posts_per_page" => -1); $the_query = new WP_Query($args); while ( $the_query->have_posts() ) : $the_query->the_post(); if ($post->ID == 1 ): ?> <div class="hero"> <div class="hero-wrapper"> <div class="article-info"> <p class="topic"><a href=" ">Culture</a></p> <h1 class="hero-title"><a href="">Hero post: <?php the_title(); ?></a></h1> </div> </div> </div> <?php endif; ?> <?php endwhile; wp_reset_postdata(); ?> <div class="main-container"> <!-- Posts starts here --> <div class="posts"> <div class="posts__post"> <?php $args = array("posts_per_page" => 6); $the_query = new WP_Query($args); while ( $the_query->have_posts() ) : $the_query->the_post(); if($post->ID !== 1): ?> <article> <a class="posts__post--preview" href=" "><img src="<?php the_post_thumbnail_url(); ?>"></a> <a class="posts__post--title" href="" ><h2>Non hero: <?php the_title(); ?></h2></a> <p class="posts__post--excerpt"><?php the_excerpt(); ?></p> <?php echo "<p>post ID: " . $post->ID . "</p>"; ?> </article> <?php endif; endwhile; ?> </div> </div> </div> </div> 

PS Извините, что я не понимаю ваш вопрос, теперь все должно быть в порядке. PS2 Вам не следует редактировать файл index.php, если вы хотите сделать это правильно, прочитайте иерархию шаблонов и т. Д. Полезная схема: введите описание изображения здесь

Нет необходимости делать сложные вещи, если вы используете sticky функцию, которая позволяет вам помечать одно или несколько сообщений, которые нужно подтолкнуть к стеку. С помощью флажка в администраторе вы можете определить, какой пост должен быть «героем».

Затем вы используете простой цикл для вывода всех ваших сообщений. Листы всегда будут оставаться на вершине, также когда вы добавляете новые сообщения.

Если вы установите width:100%; на столбе с классом липкой и width:48%; float:left; width:48%; float:left; на других постах у вас есть настройка, которую вы хотите.

ОБНОВИТЬ

Если вы хотите, чтобы ваши части html были разделены, вам понадобится другой цикл, который просто вернет первый липкий пост, например этот ( docs ):

 $sticky = get_option( 'sticky_posts' ); $query = new WP_Query( array( 'p' => $sticky[0] ) ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); ... do loop stuff .. } wp_reset_postdata(); // resetting for the main query } 

Стандартный цикл домашней страницы сначала помещает любые липкие сообщения, поэтому вам может не понадобиться специальный HTML для публикации героя, а именно CSS, нацеленный на него.

Этот код в плагине или вашем файле functions.php гарантирует, что только одно сообщение может быть липким:

 add_action( 'post_stuck', 'wpse239911_only_one_sticky' ); function wpse239911_only_one_sticky( $post_id ) { remove_action( 'post_stuck', 'wpse239911_only_one_sticky' ); // prevent loop delete_option( 'sticky_posts' ); stick_post( $post_id ); } 

Всякий раз, когда сообщение делается липким, функция срабатывает, очищая список липких сообщений, а затем создавая сообщение, которое снова запустило действие.

Удаление действия гарантирует, что вызов stick_post не погрузит нас в вечную бездну.