Intereting Posts
Управление пользователями для пользователей, у которых нет адреса электронной почты Лучший способ иметь один продукт как в категории аренды, так и в продаже. Я супер администратор, и я хочу дать администратору возможность добавлять новых пользователей …? Внедрение пользовательских тегов / налоговых страниц Зачем использовать API настроек в новом меню администрирования? Каков наилучший способ управления множеством 301 переадресаций в WordPress? Добавить пункт меню для редактирования определенной страницы Как переносить / WordPress папку с одного Mac на другой Разрешить регистрировать пользователя для выбора категории публикации при регистрации в блоге wp_editor некоторая функциональность, не работающая над настраиваемой темой Отображение RSS-канала через fetch_feed. Как показать название сайта в фиде? как комбинировать условия AND, OR и NOT, где удаление персонализированной почты на основе пользовательской даты поля хранимая переменная woocommerce Подменю подпрыгивает

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

Я сделал страницу, на которой вы можете найти всех тизеров (тизер, сделанных с помощью тега 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(); ?> и вы должны использовать теги «Больше».