In 2012 I published a tutorial display your WordPress Recent Posts on a Static Page. I wouldn’t ever have dreamed that it would be one of the most commented posts on my blog and even now people are still asking for hints and tips on how to expand the code further so I’ve decided to go through all the comments and gathered enough to have a FAQ section.
**Generally all code will be specified in the loop unless otherwise stated**
If your post thumbnails don’t work make sure you have set a featured image on your post edit screen and make sure you have included the following snippet in functions.php
<?php add_theme_support( 'post-thumbnails' );?>
If you want to use the default image size then simply use
<?php the_post_thumbnail();?>
You can also change the size of your post’s featured image by choosing one of the following.
<?php the_post_thumbnail( 'medium' );?>
<?php the_post_thumbnail( 'large' );?>
<?php the_post_thumbnail( 'full' );?>
<?php the_post_thumbnail( array(100, 100) ); //Custom Size?>
If that doesn’t work try get_the_post_thumbnail
<?php echo get_the_post_thumbnail($post->ID, 'full'); ?>
<?php echo get_the_post_thumbnail($post->ID, array(100,100),'thumbnail');?>
If you get PHP errors check that your path to wp-blog-header is correct and you have used a relative link
folder/wp-blog-header.php
rather than an absolute link
https://mydomain
Also check for any whitespace after the opening and closing PHP tags, particularly in your functions.php.
If you get 404 errors try adding the call to the blog header below the doctype If that doesn’t work then add the following under the call to blog header but above the doctype tag.
<?php require('wp-blog-header.php');
/*if you are getting 404 errors add the next 2 lines*/ status_header(200);
nocache_headers();
?>
<!--HTML starts here-->
To enable error messages but not display them check/add your wp-config.php for/with the following
<?php
define('WP_DEBUG', true); // or false
if (WP_DEBUG) {
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
}
?>
If you want to add the full content use
<?php the_content();?>
and if you only want to display a snippet use
<?php the_excerpt();?>
Yes add the following above the loop
<?php global $more; $more=1; ?>
and the following inside the loop
<?php the_content();?>
Yes simply change an argument in the $args array.
$args = array( 'numberposts' => 6,
'post_status'=>"publish",
'post_type'=>"page");//change post_type from post to page
Yes but only by post or page ID
Yes but only by Cat ID
Yes, sure you can just remember to add the opening
<ul>
tag above the foreach loop and the closing tag
</ul>
below the loop.
Yes, but the code is slightly different depending on the outcome you want. If you want the posts outside the loop then the original code snippet should work.
If you are adding the posts inside a theme page that already contains the loop, my preference would be to add a new function inside functions.php and call it within that loop, as shown in the examples below.
The following goes inside functions.php
<?php
/*****
Get the latest 10 posts function to add to functions.php
*****/
function get_wow_posts(){
global $post;
$args = array(
'numberposts' => 6,
'post_status'=>"publish",
'post_type'=>"post",
'orderby'=>"post_date");
$postslist = get_posts( $args );
echo '<ul id="latest_posts">';
foreach ($postslist as $post) : setup_postdata($post); ?>
<li>
<strong><?php the_date(); ?></strong><br />
<a href="<?php the_permalink(); ?>" title="<?php the_title();?>">
<?php the_title(); ?>
</a>
</li>
<?php endforeach;?>
</ul>
<?php wp_reset_postdata();
}
?>
Below is an example, highlighted on line 13, of displaying posts inside a typical theme page by calling the function
get_wow_posts()
above. Please note that all themes differ.
<?php if ( have_posts() ) :?>
<?php while ( have_posts() ) : the_post();?>
<article <?php post_class('home-page'); ?>>
<?php if (!is_front_page()) : ?>
<h1 class='title'><?php the_title();?></h1>
<?php endif; ?>
<div class="content">
<?php get_wow_posts();?>
</div><!-- the-content -->
</article>
<?php endwhile; ?>
<?php else :?>
<article class="post error">
<h1 class="404">Nothing has been posted like that yet</h1>
</article>
<?php endif;?>
Yes, you can. For instance, if I created a custom field called ‘Teaser’ I would add the following.
<?php echo get_post_meta($post->ID, 'teaser', true);?>
Do you only have 1 post/page published? Publish more and see if it works.
Change
<?php the_date();?>
to
<?php echo get_the_date();?>
No, try parsing the RSS feed as in the following tutorial.
Yes, you can but it depends on your server settings and would be a case of trial and error.
No, you must have your own hosting.
You can reduce the server load by disabling the theme when loading.
Add the following above the call to blog-header.
define('WP_USE_THEMES', false);
Some image and post plugins may conflict with the snippet so if it doesn’t work try disabling them temporarily. If it doesn’t work for you try switching to the default WordPress theme that comes bundled with it. Check out the official WordPress Developer site for more detailed information.
Hopefully the above will answer any questions you may have. If it doesn’t, please feel free to post any questions and I’ll try my best to answer them and update this post periodically.
Welcome to Hot Web Dev October 2024, featuring the latest technology and web development news.… Read More
In this tutorial, you’ll build a fun and interactive guessing game using Svelte 5, the… Read More
Welcome to Hot Web Dev September 2024, featuring the latest technology and web development news.… Read More
The JavaScript guessing game tutorial is a simple beginner's project. It features modern JavaScript syntax… Read More
If you have been following the monthly Hot Web Dev magazine you will find the… Read More
Welcome to Hot Web Dev August 2024, featuring the latest technology and web development news.… Read More