Создайте единую страницу для пользовательского типа сообщения

Хорошо, я установил плагин пользовательского Post Type UI и создаю его. Затем я добавил к нему новое сообщение. В моей теме у меня есть такой код:

<?php $loop = new WP_Query( array( 'post_type' => 'case studies', /* edit this line */ 'posts_per_page' => 15 ) ); ?> <?php while ( $loop->have_posts() ) : $loop->the_post(); ?> <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" > <?php the_post_thumbnail('thumbnail'); ?> </a> <?php endwhile; ?> 

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

Solutions Collecting From Web of "Создайте единую страницу для пользовательского типа сообщения"

Используйте single-{posttype}.php для одиночного шаблона. Кроме того, если вы зарегистрируете свой тип сообщения с аргументом has_archive установленным в true , вы можете использовать archive-{posttype}.php для своего шаблона архива, что позволит вам пропустить этот запрос, который у вас есть, поскольку глобальный $wp_query объект уже будет заполнен специальным типом сообщения.

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

Проверьте иерархию шаблонов и рассмотрите возможность регистрации ваших CPT с использованием кода в плагине, а не с использованием плагина пользовательского интерфейса CPT.

Нет необходимости, поскольку WordPress будет использовать шаблон страницы по умолчанию, однако вы можете создать собственный файл single-cpt.php, где cpt – это имя вашего зарегистрированного типа сообщения .

 <?php get_header(); ?> <div id="main-content" class="main-content"> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php // Start the Loop. while ( have_posts() ) : the_post(); // Include the page content template. get_template_part( 'content', 'page' ); endwhile; ?> </div><!-- #content --> </div><!-- #primary --> </div><!-- #main-content --> <?php get_sidebar(); get_footer(); 

Вы можете просто записать это в свой файл single.php (внутри цикла) и вывести все поля, которые вам нужны, в инструкции if.

 if($post_type == 'case_studies') { // you may need this to be without spaces (machine name) echo '<h1>'.get_the_title().' flavors</h1>'; // post id $post_id = get_the_ID(); get_post_meta($post_id, 'custom_field_name', true); <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a> <?php endwhile; ?> } 

Другой вариант – создать шаблон страницы. Скопируйте файл single.php и переименуйте его case_studies.php .. наверху в тегах php добавьте:

 <?php /* Template Name: Brand Output 04/12 */ ?> 

а затем добавить те же оператор if внутри цикла single.php, что и в предыдущем примере …

Пользовательский тип сообщения в wordpress.Basic четыре шага. Шаг 1: местоположение пути к файлу: theme / function.php в вашей теме. Вставить код в function.php (зарегистрировать настраиваемый тип сообщения)

 <?php add_action( 'init', 'custom_post_type_func' ); function custom_post_type_func() { //posttypename = services $labels = array( 'name' => _x( 'Services', 'services' ), 'singular_name' => _x( 'services', 'services' ), 'add_new' => _x( 'Add New', 'services' ), 'add_new_item' => _x( 'Add New services', 'services' ), 'edit_item' => _x( 'Edit services', 'services' ), 'new_item' => _x( 'New services', 'services' ), 'view_item' => _x( 'View services', 'services' ), 'search_items' => _x( 'Search services', 'services' ), 'not_found' => _x( 'No services found', 'services' ), 'not_found_in_trash' => _x( 'No services found in Trash', 'services' ), 'parent_item_colon' => _x( 'Parent services:', 'services' ), 'menu_name' => _x( 'Services', 'services' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'description' => 'Hi, this is my custom post type.', 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ), 'taxonomies' => array( 'category', 'post_tag', 'page-category' ), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post' ); register_post_type( 'services', $args ); } ?> 

Шаг 2: как можно показать пользовательский тип WordPress на странице шаблона WordPress?

Вы можете показать в любом месте страницы шаблона следующим образом:

 <?php $args = array( 'post_type' => 'services', 'posts_per_page' => 20 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="services-items"> <?php the_title(); if ( has_post_thumbnail( $post->ID ) ) { echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">'; echo get_the_post_thumbnail( $post->ID, 'thumbnail' ); echo '</a>'; } ?> </div> <?php endwhile; ?> 

Шаг 3: Создайте новый шаблон для показа одного сообщения, подобного этому.

single {{название почтового типа} .php или single-services.php

Шаг4: Вставить код в файл single-services.php

  <?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <div class="main-post-div"> <div class="single-page-post-heading"> <h1><?php the_title(); ?></h1> </div> <div class="content-here"> <?php the_content(); ?> </div> <div class="comment-section-here" <?php //comments_template(); ?> </div> </div> <?php endwhile; ?> 

Это пример персонализированного сообщения с одной почтовой страницей.