Intereting Posts
Используйте отдельную настраиваемую таблицу (не сообщения) для обработки данных загрузки файлов WordPress получает встроенное / вложение видео Проверьте, есть ли сообщение в любой дочерней категории родительской категории Получить порядок сортировки категорий товаров Как отключить или исключить кеширование для wp-cron.php * в управляемом wordpress? Добавление видео в мой блог Как создать глобальный заголовок в заголовке темы wordpress если это специальный пользовательский пост в cpt Данные формы не сохраняются в базе данных WordPress добавить пользовательские столбцы пользователю Что такое user_trailingslashit ()? Настроить результаты поиска для настраиваемого типа сообщений Переменные продукты как пользовательские типы сообщений Как предотвратить загрузку всех ресурсов плагина? Почему мой контент исчезает, когда я делаю страницу в соответствии с именем архива?

Как разместить пользовательские типы сообщений на главной странице

Я пытаюсь создать портфолио с помощью WordPress, используя тип пользовательской публикации, чтобы отображать мои проекты. Каждый проект, который я хочу отобразить на моей статической первой странице с изображением с изображением в виде миниатюры, и нажав на миниатюру, приведет меня непосредственно к проекту.

Как отправить пользовательские типы сообщений на статическую главную страницу? Я хочу показать только последние 6 сообщений, и тогда у меня будет ссылка на остальных через мою навигацию.

Solutions Collecting From Web of "Как разместить пользовательские типы сообщений на главной странице"

Поэтому, если вы зарегистрировали CPT с именем wpse_242473_custom_post_type вы можете использовать это, чтобы разместить 6 недавних сообщений этого типа на своей статической главной странице (или в любом месте). Вы можете использовать ярлык или тег шаблона, и функция должна работать для обоих.

Это модификация некоторого кода, который я использую во многих сайтах. Поместите его в функции вашей темы.php. Измените HTML, который я использовал для себя, конечно.

Я добавил трюк, который я имел в виду, чтобы попытаться какое-то время, поэтому, если он задыхается, сообщите мне, и я буду проверять его правильно. Я добавил полный набор необязательных аргументов, которые позволяют, как я надеюсь, использовать ту же самую функцию как для короткого кода, так и для тега шаблона. Вы можете либо поместить [recentposts] в визуальный редактор на любую страницу, либо поставить <?php wpse_242473_recent_posts(); ?> <?php wpse_242473_recent_posts(); ?> в любой шаблон вашей темы.

Чтобы поместить его в шаблон для вашей статической главной страницы, отредактируйте (или создайте) шаблон front-page.php . Это будет автоматически выбрано для вашей статической передней страницы, без необходимости выбирать ее на экране редактирования страницы.

 function wpse_242473_recent_posts( $atts = null, $content = null, $tag = null ) { $out = ''; $args = array( 'numberposts' => '6', 'post_status' => 'publish', 'post_type' => 'wpse_242473_custom_post_type' , ); $recent = wp_get_recent_posts( $args ); if ( $recent ) { $out .= '<section class="overview">'; $out .= '<h1>Recent Projects</h1>'; $out .= '<div class="overview">'; foreach ( $recent as $item ) { $out .= '<a href="' . get_permalink( $item['ID'] ) . '">'; $out .= get_the_post_thumbnail( $item['ID'] ); $out .= '</a>'; } $out .= '</div></section>'; } if ( $tag ) { return $out; } else { echo $out; } } add_shortcode( 'recentposts', 'wpse_242473_recent_posts' ); 

Это простой поиск сообщений, которые вы хотите.

Цикл foreach создает ваш HTML-код, а затем условное выражение в конце возвращает HTML, если вы использовали короткий код, или эхо-сигнал, если вы вызываете функцию в качестве тега шаблона.

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

Edit: Этот ответ был написан до того, как я понял, что OP имеет статическую переднюю страницу. Я оставил его здесь, если он полезен для кого-то еще и добавил второй ответ для случая статической передней страницы.

Это добавит ваш собственный тип сообщения в основной цикл главной страницы:

 add_action( 'pre_get_posts', 'wpse_242473_add_post_type_to_home' ); function wpse_242473_add_post_type_to_home( $query ) { if( $query->is_main_query() && $query->is_home() ) { $query->set( 'post_type', array( 'post', 'your_custom_post_type_here') ); } } 

Проверка is_home гарантирует, что мы находимся на главной странице блога «home», а is_main_query гарантирует, что мы не будем непреднамеренно влиять на любые вторичные циклы.

Если вам нужен только ваш тип сообщений, а не обычные сообщения, удалите post из массива типов сообщений.

В Интернете есть некоторые неправильные статьи, которые рассматривают это действие как фильтр. Это не так, он передает запрос по ссылке, чтобы вы могли напрямую задавать запросы args.

Вы можете выполнить следующие шаги:
1) Создайте шаблон своего CPT (пользовательский тип сообщения)
2) Поместите следующие коды в этот шаблон; замените CPT на CPT.
3) Откройте новую страницу и опубликуйте новую страницу, выбрав этот шаблон с правой стороны.
4) Наконец, перейдите к настройке, затем щелкните по чтению, затем выберите главную страницу под статической страницей.

коды:

 <?php /** *Template Name:CPT * @package CPT * @since CPT 1.0 */ get_header(); global $paged; if( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } elseif( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } $args = array( 'post_type' => 'CPT', 'posts_per_page'=>6, 'paged' => $paged, ); $query = new WP_Query($args); ?> <?php if ( $blog_query->have_posts() ) : ?> <?php while ( $query->have_posts() ) : $query->the_post(); ?> <div class="post-thumbnail"> <?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) {?> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php the_post_thumbnail(); ?> </a> <?php } ?> </div> <?php endwhile; ?> <?php endif; ?> <?php get_footer(); ?>