Intereting Posts
Boldy Theme – Tweak PHP для второго логотипа? WordPress 3.5 – добавление пользовательского размера изображения Ошибка 404 в разбивке по страницам на главной странице Как использовать hyperdb для разделения и совместного использования набора данных пользователя между установками WordPress? Список дочерних страниц родительской страницы родителей (дочерние страницы от грандиозного родителя) Вход администратора WP продолжает переадресацию на логин Какая функция публикует сообщение при нажатии кнопки публикации? Обновление WordPress 4.0 запрашивает пароль FTP Добавить суффикс к имени файла загруженных изображений Функция получения постоянной ссылки на пользовательские архивы типа записей? Как экспортировать галереи WordPress? Простой плагин не отображает контент Woocommerce – Изменение порядка продуктов upsell Как я могу подключиться к созданию нового сообщения и выполнить wp_die (), прежде чем сообщение будет вставлено в базу данных? Удалить меню администратора

Последние сообщения на главной странице

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

<?php function recentPosts() { $rPosts = new WP_Query(); $rPosts->query('showposts=3'); while ($rPosts->have_posts()) : $rPosts->the_post(); ?> <a href="<?php the_permalink();?>"><?php the_post_thumbnail('recent-thumbnails'); ?></a> <h2><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2> <?php the_content(); ?> <?php endwhile; wp_reset_query(); } ?> 

Это хорошо работает, но на моей домашней странице я получаю весь контент из своих статей, и мне нужен только тизер. (Например, 2 строки). Я не знаю, как это сделать здесь. Ниже вы видите код домашней страницы.

 <?php /** * @content not visible * @content not visible * * Template Name: homepage */ ?> <?php get_header(); ?> <?php echo recentPosts(); ?> <?php the_content(); ?> <?php get_footer(); ?> 

Solutions Collecting From Web of "Последние сообщения на главной странице"

Во-первых, убедитесь, что ваш файл шаблона называется home.php .

Во-вторых, нет необходимости использовать настраиваемый цикл запросов в этом контексте. Если вы хотите отобразить только 3 сообщения в индексе сообщений блога (например, «домашняя страница»), затем отфильтруйте основной запрос цикла через pre_get_posts :

 function wpse83660_filter_pre_get_posts( $query ) { if ( is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', '3' ); } } add_action( 'pre_get_posts', 'wpse83660_filter_pre_get_posts' ); 

И вы можете заменить всю recentPosts() функцию recentPosts() обычным циклом.

Thurd, вы вызываете the_content() и вне контура создания цикла, и ожидаете, что он вернет контент, отличный от того, что он вернет:

 <?php get_header(); ?> <?php the_content(); ?> <?php get_footer(); ?> 

Этот вызов get_content() имеет 2 проблемы:

  1. Вы не создавали цикл:

     if ( have_posts() ) : while ( have_posts() ) : the_post(); 
  2. В контексте индекса сообщений в блогах этот вызов the_content() будет возвращать содержимое сообщений в индексе сообщений блога , а не содержимое страницы *, назначенной как page_for_posts

Решая вторую проблему, мы также исправим первое.

Чтобы получить post_content для страницы, назначенной как page_for_posts , используйте get_page() и передайте ее get_option( 'page_for_posts' ) :

 $page_object = get_page( get_option( 'page_for_posts' ) ); 

Затем выведите результаты:

 if ( ! is_null( $page_object ) ) { echo apply_filters( 'the_content', $page_object->post_content ); } 

Итак, весь файл шаблона будет выглядеть так:

 /** * Blog posts index template file * * Displays the blog posts index * * @filename: home.php */ get_header(); if ( have_posts() ) : while ( have_posts() ) : the_post(); <a href="<?php the_permalink();?>"><?php the_post_thumbnail('recent-thumbnails'); ?></a> <h2><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h2> <?php the_content(); ?> endwhile; endif; $page_object = get_page( get_option( 'page_for_posts' ) ); if ( ! is_null( $page_object ) ) { echo apply_filters( 'the_content', $page_object->post_content ); } get_footer(); 

Ваш код вызывает the_content() , которая возвращает весь пост.

Если все, что вам нужно, это «тизер», тогда ваш код должен вызывать the_excerpt()

Добавьте <?php global $more; $more = 0; ?> <?php global $more; $more = 0; ?> <?php global $more; $more = 0; ?> сразу после / ниже while ($rPosts->have_posts()) : $rPosts->the_post(); ?> while ($rPosts->have_posts()) : $rPosts->the_post(); ?> и вы должны использовать теги «Больше».