Hello fellow wordpress expirienced users.
I’m having a struggle while doing a latest 3 posts excerpt with thumbnail in my homepage in Wordpress TwentySixteen Theme.
I tried various possibilities but i cant get it running.
The goal is to look the posts like this:
http://caenthemes.cekuj.net/?s=p%C5%99%C3%ADsp%C4%9Bvek
My thought is to use an already made template for the seach page.
But than it the text of the excerpt is nowhere:
http://caenthemes.cekuj.net/
The fact that its not styled leave aside please.
The code of the main page:
<?php
/**
* The template for displaying main-page without title.
* #package WordPress
* #subpackage Twenty_Sixteen
* #since Twenty Sixteen 1.0
*/
?>
<section id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<!--<header class="entry-header">
<?php the_title('<h1 class="entry-title">', '</h1>'); ?>
</header><!-- .entry-header -->
<div class="wp-page-content">
<?php
the_content();
wp_link_pages(array(
'before' => '<div class="page-links"><span class="page-links-title">' . __('Pages:', 'twentysixteen') . '</span>',
'after' => '</div>',
'link_before' => '<span>',
'link_after' => '</span>',
'pagelink' => '<span class="screen-reader-text">' . __('Page', 'twentysixteen') . ' </span>%',
'separator' => '<span class="screen-reader-text">, </span>',
));
?>
</div><!-- .entry-content -->
</section>
<section>
<header class="entry-header">
<h2>
<?php
if (get_locale() == 'cs_CZ') {
echo "Nejnovější příspěvky";
} else {
echo "Latest posts";
}
?>
</h2>
</header><!-- .entry-header -->
<?php
$args = array(
'posts_per_page' => 3,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'author_name' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$myposts = get_posts($args);
foreach ($myposts as $post) : setup_postdata($post);
get_template_part('template-parts/content', 'search');
endforeach;
wp_reset_postdata();
?>
</section><!-- #wp-page-content-## -->
I’m 80% sure that i’m not handling right the inner loop within the main loop of twenty sixteen. Just to cover all posibilities i was also trying to do it not via get template but still i only get the posts categories titles and thumbnails but not the excerpt.
Can you help me with this ?
The whole page is based on twenty sixteen theme with my modifications.
Thank you very much,
Caen Ragestorm
For getting post details such as title,content and featured image you can use this code :
$latestPost = new WP_Query( array( 'post_type' => 'posts', 'posts_per_page' =>-1,'order' => 'ASC') );
while ( $latestPost->have_posts() ) : $latestPost->the_post();
$sTitle = the_title();
$sContent = the_content();
$feat_image_latestPost = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
endwhile;
Re write CSS according to your requirement.
Thanks to SJP i made it work. So the full code working for me is here, hope anyone else will find it usefull:
<section id="latest-posts">
<header class="entry-header">
<h2>
<?php
if (get_locale() == 'cs_CZ') {
echo "Nejnovější příspěvky";
} else {
echo "Latest posts";
}
?>
</h2>
</header><!-- .entry-header -->
<div class="entry-content">
<?php
$args = array(
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'suppress_filters' => true
);
$latestPost = new WP_Query($args);
while ($latestPost->have_posts()) : $latestPost->the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php the_title(sprintf('<h2 class="entry-title">', esc_url(get_permalink())), '</h2>'); ?>
</header><!-- .entry-header -->
<div class="post-summary">
<a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true">
<?php the_post_thumbnail('post-thumbnail', array('alt' => the_title_attribute('echo=0'))); ?>
</a>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div>
</div>
<?php if ('post' === get_post_type()) : ?>
<footer class="entry-footer">
<?php twentysixteen_entry_meta(); ?>
<?php
edit_post_link(
sprintf(
/* translators: %s: Name of current post */
__('Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen'), get_the_title()
), '<span class="edit-link">', '</span>'
);
?>
</footer><!-- .entry-footer -->
<?php else : ?>
<?php
edit_post_link(
sprintf(
/* translators: %s: Name of current post */
__('Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen'), get_the_title()
), '<footer class="entry-footer"><span class="edit-link">', '</span></footer><!-- .entry-footer -->'
);
?>
<?php endif; ?>
</article>
<?php
endwhile;
wp_reset_postdata();
?>
</div>
</section>
Nice day to you all.
Caen Ragestorm
www.CaenRagestorm.cz
Related
OK, I creating all posts page view, and stuck on loop. Here is the wp_query:
<?php if ( ! is_single() ) : ?>
<div class="entry-content">
<?php
$first_articles = new WP_Query(
array(
'posts_per_page' => 2,
'numberposts' => 2,
'category_name' => 'artykuly',
'order' => 'DESC',
)
);
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ),
'after' => '</div>',
'link_before' => '<span class="page-number">',
'link_after' => '</span>',
) );
?>
<?php if ( $first_articles->have_posts() ) : while ( $first_articles->have_posts() ) : $first_articles->the_post(); ?>
<div class="kat-img" style="background: url('<?php the_post_thumbnail_url(); ?>')">
<div><?php the_title( '<h2 class="entry-title">', '</h2>' ); ?></div>
<div><?php echo excerpt(10); ?></div>
<div><?php echo get_the_date(); ?></div>
<div><?php echo the_tags( '<ul><li>', '</li><li>', '</li></ul>' ); ?></div>
</div>
<?php endwhile; endif; wp_reset_query(); ?>
</div><!-- .entry-content -->
<?php endif; ?>
This is the code inside content.php (there is nothing more, only this) and problem with this loop is that it display 2 latest post but these 2 latest post loop is cloned and displayed 6 times. Where is the problem? Should I add some more limits for this loop? I want to display 2 latest posts only one time.
There is most probably another loop in the outer file like archive.php which is being used to display posts.
Either add this code directly in archive.php or category.php or remove the other loop from those files.
Also remove 'numberposts' => 2 from the wp query, it is not needed.
I'm pretty new in world of wordpress and I'm trying to adjust HTML page into wordpress theme.
I need a page content to be displayed first on a page and under that, the posts should be shown. But what I'm getting are just posts shown twice on the page (where page content should be). Is there any possibility to overcome this?
And additional question, how to filter posts according to their category? I've tried with query_posts('cat=Small'), but it doesn't seem to work properly.
The code for index.php looks as following:
<?php get_header(); ?>
<?php
wp_reset_query();
while ( have_posts() ) : the_post();
the_content();
endwhile;
wp_reset_query();
?>
<section>
<header class="major">
<h2>Erat lacinia</h2>
</header>
<div class="features">
<?php query_posts('cat=Small'); ?>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<article>
<span class="icon fa-diamond"></span>
<div class="content">
<h3><?php the_title(); ?></h3>
<p><?php the_content('Read More'); ?></p>
</div>
</article>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>
Try the below code. This may help you
<section>
<div class="major">
<h2>Erat lacinia</h2>
</div>
<div class="features">
<?php $args = array(
'posts_per_page' => -1,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'ASC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'post_status' => 'publish',
'suppress_filters' => true
);?>
<?php query_posts( $args ); ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<span class="icon fa-diamond"></span>
<div class="content">
<h3><?php the_title(); ?></h3>
<p><?php the_content('Read More'); ?></p>
</div>
</article>
<?php endwhile; wp_reset_query(); ?>
</div>
</section>
You can use two loops.
In your php page template, first execute the regular loop to get the content of the actual page, like this:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//output page content here
<?php endif; ?>
Then you define a new query for the desired posts:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'ASC',
)
);
//(Add and change arguments as desired in the array above)
$loop1 = new WP_Query($args);
if ( $loop1->have_posts() ) : while ( $loop1->have_posts() ) : $loop1->the_post();
//Output the post contents in a loop here
<?php endif;
wp_reset_postdata();?>
And then add the rest of the page template (footer etc.)
<?php
/*
*Template name: test
*/
get_header();
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$attrs = array(
'numberposts' => 10,
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => array( 'small' )
)
)
);
$my_posts = get_posts( $attrs );
the_content();
?>
<?php if ($my_posts): ?>
<section>
<header class="major">
<h2>Erat lacinia</h2>
</header>
<div class="features">
<?php foreach ($my_posts as $key => $value): ?>
<article>
<span class="icon fa-diamond"></span>
<div class="content">
<h3><?= $value->post_title; ?></h3>
<p><?= $value->post_content ?></p>
</div>
</article>
<?php endforeach ?>
</div>
</section>
<?php endif ?>
<?php
endwhile;
else :
echo wpautop( 'Sorry, no posts were found' );
endif;
get_footer(); ?>
I try to customize my own post using the shortcode way in wordpress. I want to display the post according to its category.
<?php
function sample_post($atts) {
extract(shortcode_atts(array(
'category_name' => 'uncategorized'
), $atts));
$args = array('category_name' => $category_name);
query_posts($args);
if (have_posts()) : while (have_posts()) : the_post(); ?>
<label><?php the_title(); ?></label>
<?php
endwhile;
endif;
}
add_shortcode('sample_post', 'sample_post');
?>
the code is fine and I have a file in my template name content-page.php
here is the code of my content-page
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
</header><!-- .entry-header -->
<div class="entry-content">
<?php the_content(); ?>
<?php
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'unite' ),
'after' => '</div>',
) );
edit_post_link( __( 'Edit', 'foodgrower' ), '<span class="edit-link">', '</span>' );
?>
</div><!-- .entry-content -->
</article><!-- #post-## -->
I don't know if I miss something about the setup or query on it. Here's I really want to displays. I only want to display <label><?php the_title(); ?></label> (the title of the post), but now it displays the content-page.php. I don't get it also why it appears in my page. I didn't call the content-page.php to display in my page.
Change your code to return the data, like the following,
function sample_post($atts) {
$return = '';
extract(shortcode_atts(array(
'category_name' => 'uncategorized'
), $atts));
$args = array('category_name' => $category_name);
$the_query = new WP_Query( $args );
if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post();
$return .= "<label>".the_title()."</label>";
endwhile;
endif;
return $return;
}
add_shortcode('sample_post', 'sample_post');
I'm going crazy here - I can't figure out why this doesn't work!
I have a wordpress template with multiple queries to show different post types.
I am able to do this no problem:
$showfeatposts = "1";
$args = array(
'numberposts' => $showfeatposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '58',
'post_status' => 'publish',
'suppress_filters' => true
);
Which passses the value of "1" into the 'numberposts' variable.
What I NEED to do is instead replace that value of "1" with a value passed from a custom field in the admin panel so that the administrator can enter the number of posts they want to show.
When I change my code instead to this:
$showarticleposts = the_field('articles-posts-to-show');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
I get all posts returned, as if the value being entered is '-1'
I've verified that the actual value in the custom field is '2' by enchoing it on the page.
What am I doing wrong? Surely this should be possible?
For reference: Here's the page.
ETA: I've also tried this method from an ACF tutorial - still doesn't work:
$args = array(
'numberposts' => get_field('showarticleposts'),
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
ETA2: In response to the answer below - I have also tried this option:
$showarticleposts = get_field('showarticleposts');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
And if I put this code on the page - it does echo the number '2':
<?php echo get_field('showarticleposts'); ?>
Per request - here is the full page of code - I have tried to clean it up as much as possible - you will undoubtably notice the weird coding for the reports section, I am taking this over from someone who used Types to create the custom fields and custom post types. But I am using ACF custom fields for my attempt to add the ability to choose how many of each post-type to show on the homepage:
section id="content" role="main" class="clearfix animated">
<?php
/**
* If Featured Image is uploaded set it as a background
* and change page title color to white
**/
if ( has_post_thumbnail() ) {
$page_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'big-size' );
$page_bg_image = 'style="background-image:url(' . $page_image_url[0] . ');"';
$title_with_bg = 'title-with-bg';
} else {
$title_with_bg = 'wrapper title-with-sep';
} ?>
<!--<header class="entry-header page-header">
<div class="page-title <?php echo isset( $title_with_bg ) ? $title_with_bg : ''; ?>" <?php echo isset( $page_bg_image ) ? $page_bg_image : ''; ?>>
<div class="wrapper">
<h1 class="entry-title"><?php the_title(); ?></h1>
</div>
</div>
</header>-->
<div class="wrapper">
<div class="grids">
<div class="grid-8 column-1">
<?php
// Enable/Disable sidebar based on the field selection
if ( ! get_field( 'page_sidebar' ) || get_field( 'page_sidebar' ) == 'page_sidebar_on' ):
?>
<?php endif; ?>
<?php
if (have_posts()) : while (have_posts()) : the_post();
?>
<div class="page-content">
<?php the_content(); ?>
</div>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php $showfeatposts = "1";
$args = array(
'numberposts' => $showfeatposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '58',
'post_status' => 'publish',
'suppress_filters' => true
);
$featposts = get_posts( $args );
foreach( $featposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-12 recent feat" id="recent">
<figure class="entry-image inview">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'rectangle-size-large' ); ?></a>
<?php } ?>
</figure>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?> </div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo apply_filters("the_content", $post->the_excerpt) ; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Articles</h2>
</div>
</header>
</div>
<?php $showarticleposts = "4";
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
$artposts = get_posts( $args );
foreach( $artposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent arts" id="arts">
<figure class="entry-image inview">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'rectangle-size' ); ?>
</a>
<?php } ?></figure>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?></div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php if ($post->post_excerpt) the_excerpt(); else { ?>
<?php $content = apply_filters("the_content", $post->post_content);
$content = strip_tags($content);
echo substr($content, 0, 100); }
?></div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Videos</h2>
</div>
</header>
</div>
<?php $showvideoposts = "2";
$args = array(
'numberposts' => $showvideoposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '3, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
$vidposts = get_posts( $args );
foreach( $vidposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent vids">
<?php $video_embed = wp_oembed_get( get_post_meta( $post->ID, 'add_video_url', true ) ); echo '<figure class="video-wrapper">' .$video_embed. '</figure>'; ?>
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?> </div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo $post->the_content; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Notes</h2>
</div>
</header>
</div>
<?php
$shownoteposts = "2";
$args = array(
'numberposts' => $shownoteposts,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'cat' => '42',
'post_status' => 'publish',
'suppress_filters' => true
);
$noteposts = get_posts( $args );
foreach( $noteposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent notes">
<header class="entry-header">
<div class="entry-category">
<?php the_author_posts_link(); ?> / <?php the_time('F jS, Y'); ?>
</div>
<h2 class="entry-title" itemprop="headline">
<?php echo $post->post_title; ?>
</h2>
</header>
<div class="entry-content">
<?php echo apply_filters("the_excerpt", $post->the_excerpt) ; ?>
</div>
<div class="entry-category">
<span class="posted-on">By
<span class="author vcard"><?php the_author_posts_link(); ?></span></span>
</div>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="col-md-12 homehdr">
<header class="section-header">
<div class="title-with-sep">
<h2 class="title">Recent Reports</h2>
</div>
</header>
</div>
<?php
$showreports = get_field('showreports');
$args = array(
'numberposts' => $showreports,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'reports',
'post_status' => 'publish',
'suppress_filters' => true
);
$reptposts = get_posts( $args );
foreach( $reptposts as $post ) : //setup_postdata($ppost);
setup_postdata( $post ); ?>
<div class="col-md-6 recent rpts">
<h2 class="report-title" itemprop="headline">
<a href="<?php echo get_permalink($post->ID); ?>">
<?php echo(types_render_field("first-name", array('raw' => true))); echo(" ");
echo(types_render_field("last-name", array('raw' => true))); ?></a>
</h2>
<p><strong>Posted by:</strong> <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>" class="url fn n" rel="author" itemprop="url">
<span itemprop="name"><?php the_author_meta('display_name'); ?>
</span></a> on <?php
$publish_date = '<time class="entry-date updated" datetime="' . get_the_time( 'c' ) . '" itemprop="datePublished">' . get_the_time( get_option( 'date_format' ) ) . '</time>'; echo $publish_date; ?><br />
<strong>Dates Seen:</strong>
<?php,$dates_seen = types_render_field("dates-seen", array('raw' => true)); echo($dates_seen); ?>
<br />
<strong>Affiliate:</strong>
<?php echo(types_render_field("milb", array('raw' => true)));
<br />
<strong>MLB Team</strong>
<?php echo(types_render_field("mlb-club", array('raw' => true))); ?>
</p>
</div>
<?php
$pnum++;
endforeach; ?>
</article>
<?php endwhile; endif; ?>
<?php
// Enable/Disable comments
if ( $ti_option['site_page_comments'] == 1 ) {
comments_template();
} ?>
<?php
// Enable/Disable sidebar based on the field selection
if ( ! get_field( 'page_sidebar' ) || get_field( 'page_sidebar' ) == 'page_sidebar_on' ): ?>
</div>
<?php get_sidebar(); ?>
</div><!-- .grids -->
<?php endif; ?>
</div>
</section><!-- #content -->
<?php get_footer(); ?>
the_field(), by definition, will echo out the value of the field onto the page and NOT store it inside a variable... instead you want to do this:
$showarticleposts = get_field('articles-posts-to-show');
$args = array(
'numberposts' => $showarticleposts,
'orderby' => "post_date",
'order' => 'DESC',
'post_type' => 'post',
'cat' => '5, -58',
'post_status' => 'publish',
'suppress_filters' => true
);
To make sure it's getting what you want, do: var_dump( $showarticleposts ); and see if a 2, as you claim it should be, is being dumped on the page. Your third example "should" work, but you are using a different "field" name in each of your examples, so it's hard to tell if 'showarticleposts' or 'articles-posts-to-show' is the actual field name.
UPDATE
Since looking at your code... I have noticed that you are using setup_postdata( $post );. While this is a great thing to use, it's changing your global $post variable, and therefore when you call get_field() it is using the $post->ID of the "changed" $post variable, which is not what you want. You want the original $post->ID of the page you are currently viewing. So, simply add wp_reset_postdata(); after every custom loop you've created and it should fix the issue.
UPDATE 2
Since you mention it is STILL not working, the only other thing I can think of is to set a variable to the original page id at the very top of the page...
$current_page_id = get_the_ID();
Then when you call get_field(), include that id:
$showarticleposts = get_field( 'articles-posts-to-show', $current_page_id );
My Wordpress site has a problem:
In my blog-loop only the first post has content displayed; for the rest the_content(); never seemed to be called (checked with "inspect element").
Any probs in my code?
php/html:
<section id="blogPosts" class="clearfix">
<?php $myposts = get_posts('');
foreach($myposts as $post) :
setup_postdata($post);
?>
<div id="post-<?php the_ID(); ?>" class="post clearfix">
<div class="postHeader clearfix">
<a href="<?php the_permalink();?>">
<h2><?php the_title(); ?></h2>
</a>
<h4><?php the_date(); ?></h4>
</div>
<div class="postTags clearfix">
<ul class="tagContainer clearfix">
<?php the_tags( '<li><div class="tagInline">',
'</div></li><li><div class="tagInline">',
'</div></li>'); ?>
</ul>
</div>
<div class="blogContent">
<?php the_content();?>
</div>
<div class="editPost">
<?php edit_post_link('<h4>Redigera detta inlägg', '', '</h4>'); ?>
</div>
<?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?>
<?php //comments_template(); ?>
</div>
<?php endforeach; wp_reset_postdata(); ?>
</section>
Check all other posts for having content in it..
Posts can be get by
<?php $posts_array = get_posts( $args ); ?>
Default Usage of args:
<?php $args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'orderby' => 'post_date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'post_status' => 'publish',
'suppress_filters' => true ); ?>
Access all post data
<?php
$args = array( 'posts_per_page' => -1 );
$allposts = get_posts( $args );
foreach ( $allposts as $post ) :
setup_postdata( $post ); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endforeach;
wp_reset_postdata(); ?>
This is the simple code to get all the posts. You can check the code by print the data ( print_r($post); ) to check what you are getting in the loop.
If you're talking about the page that has been assigned to Posts under Wordpress Reading Settings, you can get rid of most of your code and simplify it:
<?php if (have_posts()): while (have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; endif; ?>
Just put whatever information you want between the while statement and you'll be good. See the Wordpress codex if you want to get more specific.