content

Вывод кастомного контента в блоге на примере темы Shapely

Имеем кастомный тип «mdsv_komplektuuschie», необходимо вывести его на странице блога для этого создаются следующие php файлы:

*/wp-content/themes/shapely/template-mdsv_komplektuuschie.php — шаблон страницы на которой будет произведен вывод кастомных записей;

*/wp-content/themes/shapely/template-parts/content-mdsv_komplektuuschie.php — отвечает за внешний вид каждого поста в сетке блога;

*/wp-content/themes/shapely/template-parts/layouts/blog-mdsv_komplektuuschie.php — отвечает за внешний вид сетки блога.

Код файла template-mdsv_komplektuuschie.php:

<?php
/*
Template Name: Вывод Каталога
*/

get_header(); ?>
<?php $layout_class = shapely_get_layout_class();?>
	<div class="row">
		<?php
		if ( $layout_class == 'sidebar-left' ):
			get_sidebar();
		endif;
		?>
		<div id="primary" class="col-md-8 mb-xs-24 <?php echo esc_attr( $layout_class ); ?>"><?php
			
			/*START Отображение кастомного типа в виде блога */
			$args = array(
					/*Указываем кастомный тип*/
                   'post_type' => 'mdsv_komplektuuschie',
                   'publish' => true,
                   'paged' => get_query_var('paged'),
               );
            
            query_posts($args);

            if ( have_posts() ) : 
			/*END Отображение кастомного типа в виде блога*/
				if ( is_home() && ! is_front_page() ) : ?>
					<header>
						<h1 class="page-title screen-reader-text"><?php esc_html( single_post_title() ); ?></h1>
					</header>

					<?php
				endif;

				$layout_type = get_theme_mod( 'blog_layout_view', 'grid' );
				
				get_template_part( 'template-parts/layouts/blog-mdsv_komplektuuschie', $layout_type );
				//get_template_part( 'template-parts/content-mdsv_komplektuuschie', $layout_type );

				shapely_pagination();
			else :
				//
				get_template_part( 'template-parts/content-mdsv_komplektuuschie', 'none' );

			endif; ?>
		</div><!-- #primary -->
		<?php
		if ( $layout_class == 'sidebar-right' ):
			get_sidebar();
		endif; ?>
	</div>
<?php
get_footer();

Код файла content-mdsv_komplektuuschie.php:

<?php
/**
 * Template part for displaying posts.
 *
 * @link    https://codex.wordpress.org/Template_Hierarchy
 *
 * @package Shapely
 */
?>
	<article id="post-<?php the_ID(); ?>" <?php post_class('post-content post-grid-small col-md-6'); ?> >
		<header class="entry-header nolist">
			<?php
			$category = get_the_category();
			$image    = '<img class="wp-post-image" alt="" src="' . get_template_directory_uri() . '/assets/images/placeholder.jpg" />';
			if ( has_post_thumbnail() ) {
				$image = get_the_post_thumbnail( get_the_ID(), 'shapely-grid' );
			}
			$allowed_tags = array(
				'img'      => array(
					'data-srcset' => true,
					'data-src'    => true,
					'srcset'      => true,
					'sizes'       => true,
					'src'         => true,
					'class'       => true,
					'alt'         => true,
					'width'       => true,
					'height'      => true
				),
				'noscript' => array()
			);
			?>
			<a href="<?php echo esc_url( get_the_permalink() ); ?>">
				<?php echo wp_kses( $image, $allowed_tags ); ?>
			</a>

			<?php if ( isset( $category[0] ) ): ?>
				<span class="shapely-category">
					<a href="<?php echo esc_url( get_category_link( $category[0]->term_id ) ); ?>">
						<?php echo esc_html( $category[0]->name ); ?>
					</a>
				</span>
			<?php endif; ?>
		</header><!-- .entry-header -->
		<div class="entry-content">
			<h2 class="post-title">
				<?php echo wp_trim_words( get_the_title(), 9 ); ?>
			</h2>
<!-- post-meta -->
			<!--
			<div class="entry-meta">
				< ?php
				shapely_posted_on_no_cat(); ?>
			</div>
			-->
<!-- post-meta -->
			<?php
			the_content( sprintf(
			             /* translators: %s: Name of current post. */
				             wp_kses( __( 'Read more %s <span class="meta-nav">&rarr;</span>', 'shapely' ), array( 'span' => array( 'class' => array() ) ) ),
				             the_title( '<span class="screen-reader-text">"', '"</span>', false )
			             ) );

			wp_link_pages( array(
				               'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'shapely' ),
				               'after'  => '</div>',
			               ) );
			?>
		</div><!-- .entry-content -->
	</article><!-- #post-## -->
<?php

Код файла blog-mdsv_komplektuuschie.php:

<?php
/* Start the Loop */
?>
	<div class="row">
		<?php
		global $wp_query;
		while ( have_posts() ) : the_post();
			$i = $wp_query->current_post + 1;
			/*
			 * Include the Post-Format-specific template for the content.
			 * If you want to override this in a child theme, then include a file
			 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
			 */
			 //Указываем кастом тайп файл вывода отображения
			get_template_part( 'template-parts/content-mdsv_komplektuuschie', 'grid-small' );

			if ( fmod( $i, (int) 2 ) == 0 && $i != (int) $wp_query->post_count ) {
				echo '</div><div class="row">';
			} elseif ( $i == (int) $wp_query->post_count ) {
				continue;
			}
		endwhile;
		?>
	</div>
<?php

После указания кастомного типа необходимо установить шаблон страницы в данном случае это шаблон с именем «Вывод Каталога» и наслаждаться результатом.

Вывод кастомного контента в блоге на примере темы Shapely