I would like to display my Wordpress posts in two columns instead of one.
I'm using Bootstrap and Advanced Custom Fields. What I have works but the posts are repeated in both of the col-lg-5 divs.
<div class="container">
<?php // Display blog posts on any page # https://m0n.co/l
$temp = $wp_query; $wp_quersy= null;
$wp_query = new WP_Query(); $wp_query->query('posts_per_page=-1' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="row">
<div class="col-lg-2">
<?php the_category(', '); ?>
</div>
<div class="col-lg-5 left">
<?php the_post_thumbnail(); ?>
<p><?php the_title(); ?></p>
</div>
<div class="col-lg-5">
<?php the_post_thumbnail(); ?>
<p><?php the_title(); ?></p>
</div>
</div>
<?php endwhile; ?>
<?php if ($paged > 1) { ?>
<?php } else { ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
</div>
What you need to do is use columns in CSS.
Remove the additional column in your PHP file.
Apply the following CSS
.container {
-moz-column-count: 2;
-webkit-column-count: 2;
column-count: 2;
-moz-column-gap: 20px;
-webkit-column-gap: 20px;
column-gap: 20px;
}
.col-lg-5 {
padding-bottom: 20px;
width: auto;
-webkit-column-break-inside: avoid;
-moz-column-break-inside: avoid;
-moz-page-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid-column;
}
You can try the following:
<div class="container">
<div class="row">
<?php // Display blog posts on any page # https://m0n.co/l
$temp = $wp_query; $wp_quersy= null;
$wp_query = new WP_Query(); $wp_query->query('posts_per_page=-1' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="col-lg-2">
<?php the_category(', '); ?>
</div>
<div class="col-lg-5">
<?php the_post_thumbnail(); ?>
<p><?php the_title(); ?></p>
</div>
<?php endwhile; ?>
</div>
<?php if ($paged > 1) { ?>
<?php } else { ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
</div>
Related
I know that this has been posted many times, but I have truly spent close to 60 hours trying to figure this out - this is not my strong point!
Im running wordpress, standard installation, no plugins or anything at this stage.
I am simply trying to display the most recent 3 posts from the blog, or if we could go one step further, most recent 3 from catx.
Here is my code, which I believe should work.
<?php
require '/home1/digita/public_html/articles/wp-load.php'; ?>
<section class="services blog sec-normal">
<div class="container">
<div class="service-wrap">
<div class="row">
<style>.wp-block-image {
max-width: 100%;
margin-bottom: 1em;
display: none;
}
a.more-link {
display: none;
}
.services .service-wrap .service-section a {
margin-top: 0px!important;
}
</style>
<?php if (have_posts()) :
while ( have_posts() ) : the_post();
?> <!-- ***** BLOG ***** -->
<div class="col-md-4" style="width: 30%;margin-top: -7%;margin-bottom: 10%;">
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
} ?>
<div class="service-section m-0" style="margin-top: 0.1%;">
<div class="title mt-0"><?php the_title(); ?></div>
<p class="subtitle"><?php the_content() ?> </p>
<hr>
Read more
</div>
</div>
<?php
// Stop the loop when all posts are displayed
endwhile;
// If no posts were found
else :
?>
<p>Sorry no posts matched your criteria.</p>
<?php
endif;
?>
</div>
</div>
</div>
</div>
</section>
The code does not return posts, and instead returns, "Sorry no posts matched your criteria." . Any advice?
Main query does not set it's data, because wp function did not run after wp-load.php in your code and main query must be set base on $_SERVER['REQUEST_URI'] that is a few complex.
But its good to use secondary query as simple way for your work:
<?php
require '/home1/digita/public_html/articles/wp-load.php';
$query = new WP_Query(array(
'post_type' => 'post',
));
?>
<section class="services blog sec-normal">
<div class="container">
<div class="service-wrap">
<div class="row">
<style>.wp-block-image {
max-width: 100%;
margin-bottom: 1em;
display: none;
}
a.more-link {
display: none;
}
.services .service-wrap .service-section a {
margin-top: 0px!important;
}
</style>
<?php if ($query->have_posts()) :
while ( $query->have_posts() ) : $query->the_post();
?> <!-- ***** BLOG ***** -->
<div class="col-md-4" style="width: 30%;margin-top: -7%;margin-bottom: 10%;">
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
} ?>
<div class="service-section m-0" style="margin-top: 0.1%;">
<div class="title mt-0"><?php the_title(); ?></div>
<p class="subtitle"><?php the_content() ?> </p>
<hr>
Read more
</div>
</div>
<?php
// Stop the loop when all posts are displayed
endwhile;
// If no posts were found
else :
?>
<p>Sorry no posts matched your criteria.</p>
<?php
endif;
?>
</div>
</div>
</div>
</div>
</section>
I want to display my Wordpress posts across two columns. At the moment, they run down one column. I'm also getting the categories repeating in the col-lg-2 div as I scroll down. Any tips? Thanks!
<div class="container">
<?php // Display blog posts on any page # https://m0n.co/l
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); $wp_query->query('posts_per_page=-1' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="row">
<div class="col-lg-2">
<?php the_category(', '); ?>
</div>
<div class="col-lg-5">
<?php the_post_thumbnail(); ?>
<p><?php the_title(); ?></p>
</div>
<div class="col-lg-5">
<h2><?php the_title(); ?></h2>
</div>
</div>
<?php endwhile; ?>
<?php if ($paged > 1) { ?>
<?php } else { ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
</div>
I know there is probably a solved question like this already, but I can't seem to find it.
I am just starting out so this may be a noob question, please bear with me ><
I am trying to display the top 3 recent posts on front-page.php of my site, the problem is that the post keeps being created within itself.
Here is the CSS involved.
.news-container{ background-color: #fff;
padding: 2em;
max-width: 600px;
heigth:300px;
text-align: left;
}
.has-thumbnail {
position: relative;
padding-left: 200px;
}
.post-thumbnail {
position:absolute;
top:0;
left:0;
}
article.post { border-bottom: 1px solid #bbbbbb;
margin-bottom: 3em;
}
article.post:last-of-type { border-bottom: none;
}
Here is the front-page.php code involved.
<div class="news-container">
<?php
$recentposts=get_posts('showposts=5');
if ($recentposts) {
foreach($recentposts as $post) {
setup_postdata($post);
?>
<article class="post <?php if ( has_post_thumbnail() ) { ?> has-thumbnail <?php } ?> ">
<div class="post-thumbnail">
<?php the_post_thumbnail('small-thumbnail'); ?>
</div>
<p><?php the_time('F j, Y'); ?>
<h3><?php the_title()?> </h3>
<p>
<?php echo get_the_excerpt(); ?>
Read more »
<br><br> <br><br> <br><br>
</p>
<?php
}
}
?>
</article>
</div>
Why is this happening? Thanks for reading this!
Try this updated code i think you not close all tags properly. This will solve your problem.
<div class="news-container">
<?php
$args = array('posts_per_page' => 5, 'post_type'=>'post' );
query_posts($args); $post_query = new WP_Query( $args );
while($post_query->have_posts()){ $post_query->the_post();
?>
<article class="post <?php if ( has_post_thumbnail() ) { ?> has-thumbnail <?php } ?> ">
<div class="post-thumbnail">
<?php the_post_thumbnail('small-thumbnail'); ?>
</div>
<p><?php the_time('F j, Y'); ?> </p>
<h3><?php the_title()?> </h3>
<p><?php echo get_the_excerpt(); ?>
Read more »
<br><br> <br><br> <br><br>
</p>
</article>
<?php } ?>
</div>
You can accomplish this with the WP Latest Posts Plugin: https://wordpress.org/plugins/wp-latest-posts/screenshots/
First I'm going to explain the problem. I have a wordpress website with a few pages. One of the pages is the page that shows the summary of all the articles.
This is all working fine. What I want to archieve is the following:
Article 1 should be aligned to the left of the page, Article 2 should be aligned to the right and so on. (LEFT - RIGHT - LEFT - RIGHT - LEFT - ... )
I have no idea how to start. I have done some research and maybe wp_count_posts() is going to help me but I can't fix it.
Single.php (template for 1 post)
get_header(); ?>
<section class="news-area">
<div class="wrapper" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php
$count = count_posts( $type, $perm );
echo $count;
?>
<?php get_template_part( 'content', 'single' ); ?>
<?php group_joosen_post_nav(); ?>
<?php
// If comments are open or we have at least one comment, load up the comment template
if ( comments_open() || '0' != get_comments_number() ) :
comments_template();
endif;
?>
<?php endwhile; // end of the loop. ?>
</div><!--END wrapper-->
</section>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
content.php ("template" for all the posts)
<article class="teasers" id="post-<?php the_ID(); ?>">
<div class="datum">
<div class="day">
<?php the_time('d') ?>
</div>
<div class="month">
/<?php the_time('m') ?>
</div>
<div class="year">
<?php the_time('Y') ?>
</div>
</div>
<div class="teaserscontent">
<h1><?php the_title(); ?></h1>
<?php if ( is_search() ) : // Only display Excerpts for Search ?>
<?php the_excerpt(); ?>
<?php else : ?>
<?php the_content( __( 'Lees meer', 'transport_joosen' ) ); ?>
<?php endif; ?>
</div>
</article><!-- #post-<?php the_ID(); ?> -->
You may be able to do this simply with CSS. Assuming the HTML has all article elements as siblings:
http://jsfiddle.net/isherwood/53rh3/
article {
width: 47%;
padding: 1%;
margin: 1%;
box-sizing: border-box;
display: inline-block;
vertical-align: top;
}
I have an archive page that's set up to display category specific posts. However, instead of showing only the posts from a given category on the category page, it's showing all posts. For an example, see here.
Here's the code I'm using on my archive.php page. I know it's improper use of the loop, but I'm not sure how to fix it. Thanks for the help.
<?php get_header(); ?>
<div id="content">
<div id="inner-content" class="wrap clearfix">
<h1 class="blogTitle" style="margin:10px 0 3px 0;">Blog Title</h1>
<nav class="blogNav" role="navigation">
<?php bones_blog_nav(); // Adjust using Menus in Wordpress Admin ?>
</nav>
<div id="main" class="eightcol first clearfix" role="main">
<div class="catwhiteBg">
<?php if (is_category()) { ?>
<h1 class="catTitle">
<span><?php _e("", "bonestheme"); ?></span> <?php single_cat_title(); ?>
</h1>
<?php echo category_description( $category_id ); ?>
<?php } elseif (is_author()) { ?>
<div class="authorTop">
<?php
$curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author'));
?>
<div class="author-pic"><?php echo get_avatar( $curauth->user_email, '80' ); ?></div>
<div class="author-name"><span style="font-weight: 200; color: #575757;">POSTS BY:</span>
<?php echo $curauth->first_name; ?> <?php echo $curauth->last_name; ?>
</div>
<div class="author-bio"><?php echo $curauth->description; ?></div>
<div class="author-twitter"><span>twitter</span></div>
</div>
<?php } elseif (is_day()) { ?>
<h1 class="archive-title h2">
<span><?php _e("Daily Archives:", "bonestheme"); ?></span> <?php the_time('l, F j, Y'); ?>
</h1>
<?php } elseif (is_month()) { ?>
<h1 class="archive-title h2">
<span><?php _e("Monthly Archives:", "bonestheme"); ?></span> <?php the_time('F Y'); ?>
</h1>
<?php } elseif (is_year()) { ?>
<h1 class="archive-title h2">
<span><?php _e("Yearly Archives:", "bonestheme"); ?></span> <?php the_time('Y'); ?>
</h1>
<?php } ?>
</div>
<div class="psts">
<?php
global $wp_query;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
query_posts(array('posts_per_page' => '8','paged'=>$paged));
?>
<?php
$count = 1;
while (have_posts()) : the_post(); ?>
<div class="sixcol small pst<?php if ((isset($count)) && ($count % 2 == 0 )) { echo ' last';} // same logic to add class of last to last item in row of two ?>" id="post-<?php the_ID(); ?>">
<article id="post-<?php the_ID(); ?>" role="article">
<div class="thumb-wrapper mobile">
<?php if(has_post_thumbnail()) { $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(),'post-thumb' ); echo '<img src="' . $image_src[0] . '" width="100%" class="post-thumb" />'; } ?>
<header class="post-thumb-header">
<h2 class="post-title"><?php the_title(); ?></h2>
</header> <!-- end article header -->
<p class="meta"><?php the_category(', '); ?></p>
</div>
<section class="mobile-content">
<?php the_excerpt(); ?>
</section>
</article> <!-- end article -->
</div>
<?php $count++; ?>
<?php endwhile; ?>
<nav class="wp-prev-next">
<?php echo rb_pagination(); ?>
</nav>
</div> <!-- end .psts -->
</div> <!-- end #main -->
<?php get_sidebar(); // sidebar 1 ?>
</div> <!-- end #inner-content -->
</div> <!-- end #content -->
<?php get_footer(); ?>
I think you're overriding the original query with this line:
query_posts(array('posts_per_page' => '8','paged'=>$paged));
Can you swap this line with this, and let me know the results?
global $query_string;
query_posts( $query_string . "&posts_per_page=8&paged=$paged" );
if that fails try this:
query_posts(array('posts_per_page' => '8','paged'=>$paged, 'cat' => $category_id ));