Merge pull request #135 from stef-k/various-blog-index-templates
default or masonry posts index - Many thx @stef-k for this PR!
This commit is contained in:
commit
fda1772470
|
@ -66,3 +66,8 @@ require get_template_directory() . '/inc/bootstrap-wp-gallery.php';
|
||||||
* Load WooCommerce functions.
|
* Load WooCommerce functions.
|
||||||
*/
|
*/
|
||||||
require get_template_directory() . '/inc/woocommerce.php';
|
require get_template_directory() . '/inc/woocommerce.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load a utilities library.
|
||||||
|
*/
|
||||||
|
require get_template_directory() . '/inc/utilities.php';
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* The template for displaying all pages.
|
||||||
|
*
|
||||||
|
* This is the template that displays all pages by default.
|
||||||
|
* Please note that this is the WordPress construct of pages
|
||||||
|
* and that other 'pages' on your WordPress site will use a
|
||||||
|
* different template.
|
||||||
|
*
|
||||||
|
* @package understrap
|
||||||
|
*/
|
||||||
|
|
||||||
|
get_header();
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$container = get_theme_mod( 'understrap_container_type' );
|
||||||
|
$sidebar_pos = get_theme_mod( 'understrap_sidebar_position' );
|
||||||
|
$posts_style = get_theme_mod( 'understrap_posts_index_style' );
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="wrapper" id="page-wrapper">
|
||||||
|
|
||||||
|
<div class="<?php echo $container ?>" id="content" tabindex="-1">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<!-- Do the left sidebar check -->
|
||||||
|
<?php get_template_part( 'global-templates/left-sidebar-check', 'none' ); ?>
|
||||||
|
<?php if ( 'masonry' === $posts_style ): ?>
|
||||||
|
<div class="card-columns"><?php endif; ?>
|
||||||
|
|
||||||
|
<main class="site-main" id="main">
|
||||||
|
|
||||||
|
<?php if ( have_posts() ) : ?>
|
||||||
|
|
||||||
|
<?php /* Start the Loop */ ?>
|
||||||
|
|
||||||
|
<?php while ( have_posts() ) : the_post(); ?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ( 'masonry' === $posts_style ):
|
||||||
|
get_template_part( 'loop-templates/content-card' );
|
||||||
|
else:
|
||||||
|
/* 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( 'loop-templates/content', get_post_format() );
|
||||||
|
endif;
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php endwhile; ?>
|
||||||
|
|
||||||
|
<?php the_posts_navigation(); ?>
|
||||||
|
|
||||||
|
<?php else : ?>
|
||||||
|
|
||||||
|
<?php get_template_part( 'loop-templates/content', 'none' ); ?>
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ( 'masonry' === $posts_style ): ?></div><?php endif; ?>
|
||||||
|
</main><!-- #main -->
|
||||||
|
|
||||||
|
</div><!-- #primary -->
|
||||||
|
|
||||||
|
<!-- Do the right sidebar check -->
|
||||||
|
<?php if ( 'right' === $sidebar_pos || 'both' === $sidebar_pos ): ?>
|
||||||
|
|
||||||
|
<?php get_sidebar( 'right' ); ?>
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
</div><!-- .row -->
|
||||||
|
|
||||||
|
</div><!-- Container end -->
|
||||||
|
|
||||||
|
</div><!-- Wrapper end -->
|
||||||
|
|
||||||
|
<?php get_footer(); ?>
|
|
@ -123,6 +123,29 @@ if ( ! function_exists( 'understrap_theme_customize_register' ) ) {
|
||||||
)
|
)
|
||||||
) );
|
) );
|
||||||
|
|
||||||
|
// How to display posts index page (home.php)
|
||||||
|
$wp_customize->add_setting( 'understrap_posts_index_style', array(
|
||||||
|
'default' => 'default',
|
||||||
|
'type' => 'theme_mod',
|
||||||
|
'capability' => 'edit_theme_options',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$wp_customize->add_control(
|
||||||
|
new WP_Customize_Control(
|
||||||
|
$wp_customize,
|
||||||
|
'understrap_posts_index_style', array(
|
||||||
|
'label' => __( 'Posts Index Style', 'understrap' ),
|
||||||
|
'description' => __( "Choose how to display latest posts", 'understrap' ),
|
||||||
|
'section' => 'understrap_theme_layout_options',
|
||||||
|
'settings' => 'understrap_posts_index_style',
|
||||||
|
'type' => 'select',
|
||||||
|
'choices' => array(
|
||||||
|
'default' => __( 'Default', 'understrap' ),
|
||||||
|
'masonry' => __( 'Masonry', 'understrap' ),
|
||||||
|
),
|
||||||
|
'priority' => '30',
|
||||||
|
)
|
||||||
|
) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
add_action( 'customize_register', 'understrap_theme_customize_register' );
|
add_action( 'customize_register', 'understrap_theme_customize_register' );
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Utility functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a custom length excerpt.
|
||||||
|
* If the content of the post is less than the provided length,
|
||||||
|
* the entire content is returned.
|
||||||
|
* @param $word_count
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function understrap_excerpt_with_length( $post_id, $word_count ) {
|
||||||
|
$post = get_post( $post_id );
|
||||||
|
$permalink = get_post_permalink( $post_id );
|
||||||
|
$content = strip_tags( $post->post_content );
|
||||||
|
|
||||||
|
if ( str_word_count( $content, 0 ) > $word_count ) {
|
||||||
|
$words = str_word_count( $content, 2 );
|
||||||
|
$keys = array_keys( $words );
|
||||||
|
$excerpt = substr( $content, 0, $keys[ $word_count ] );
|
||||||
|
$link_class = " class=\"btn btn-secondary understrap-read-more-link\"";
|
||||||
|
$excerpt = '<p>' . $excerpt . '[...]</p>';
|
||||||
|
$excerpt .= '<p><a href="' . $permalink . '"' . $link_class . '>Read More</a></p>';
|
||||||
|
} else {
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $excerpt;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package understrap
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<div class="card">
|
||||||
|
<article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
|
||||||
|
|
||||||
|
<header class="entry-header">
|
||||||
|
<?php if ( has_post_thumbnail() ): ?>
|
||||||
|
<?php
|
||||||
|
$alt = get_post_meta( get_post_thumbnail_id( $post->ID ), '_wp_attachment_image_alt', true );
|
||||||
|
?>
|
||||||
|
<img src="<?php echo get_the_post_thumbnail_url( $post->ID, 'large' ); ?>"
|
||||||
|
alt="<?php echo $alt; ?>"
|
||||||
|
class="card-img-top img-fluid">
|
||||||
|
<?php endif; ?>
|
||||||
|
<div class="card-block">
|
||||||
|
<?php the_title( sprintf( '<h2 class="entry-title card-title"><a href="%s" rel="bookmark">',
|
||||||
|
esc_url( get_permalink() ) ), '</a></h2>' ); ?>
|
||||||
|
|
||||||
|
<?php if ( 'post' === get_post_type() ) : ?>
|
||||||
|
|
||||||
|
<div class="entry-meta">
|
||||||
|
<p class="card-text"> <?php understrap_posted_on(); ?> </p>
|
||||||
|
</div><!-- .entry-meta -->
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
</header><!-- .entry-header -->
|
||||||
|
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="entry-content card-text">
|
||||||
|
<?php
|
||||||
|
echo understrap_excerpt_with_length( $post->ID, 15 );
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
wp_link_pages( array(
|
||||||
|
'before' => '<div class="page-links">' . __( 'Pages:', 'understrap' ),
|
||||||
|
'after' => '</div>',
|
||||||
|
) );
|
||||||
|
?>
|
||||||
|
</div><!-- .entry-content -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article><!-- #post-## -->
|
||||||
|
</div>
|
Reference in New Issue