• Hi

    For some reasons I can’t get my theme to display my latest posts correctly, so I figure I’d do a page with my latest posts.
    I found this code to create a loop to do so, but it returns an empty page. What else should I do apart from creating a new page template with that loop inside?
    Thanks

    <h3>Recent Articles</h3>
    <ul>
    <?php
        $recentPosts = new WP_Query();
        $recentPosts->query('showposts=5');
    ?>
    <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
        <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>
Viewing 15 replies - 1 through 15 (of 16 total)
  • That code looks okay–the fact you get a blank page may mean you aren’t pointing to the correct Page template, or you are putting the template in the wrong place.

    Does your page template have the “required” comments at the top which allows you to attach it to a given page?.. or.. have you attached it to a page?..

    NOTE: Use posts_per_page instead of showposts( which iirc is to be deprecated )

    Thread Starter substitute

    (@substitute)

    Ok this is solved. But the page doesn’t look like the others.

    I thought that what was in page.php was enough to make it look like the others, but nope. I am very naive I know πŸ˜‰

    So what do I need to add to that page to make it look like the others? I guess I must add the-exerpt, the category, …coming from index.php?

    <?php
    /*
    Template Name: Latest Posts
    */
    ?>
    
    <?php get_header(); ?>
    
    <div id="content">
    					<div class="contentbox"><span>Latest Posts</span><div class="clear"></div><div class="left"></div></div>
    
    <ul>
    <?php
        $recentPosts = new WP_Query();
        $recentPosts->query('showposts=10');
    ?>
    <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
    <div class="posts">
    									<h6 class="postheading" id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h6>
    									<?php the_excerpt(); ?>
    									<a href="<?php the_permalink() ?>" class="readmorelink">Read More</a>
    									<div class="postsmetadata">
    										Category : <?php the_category(', ') ?>.<br />
    										<?php the_tags( 'Tags: ', ', ', '.<br />'); ?>
    										<?php edit_post_link('Edit Post', '', ''); ?>
    									</div>
    								</div>
    <?php endwhile; ?>
    </ul>
    
    					<div class="contentbox" id="post-<?php the_ID(); ?>">
    						<div class="posts">
    							<h6 class="postheading"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h6>
    							<?php the_content('<p>Read the rest of this entry &raquo;</p>'); ?>
    							<?php wp_link_pages(array('before' => '<div class="postspagination">Pages: ', 'after' => '</div>', 'next_or_number' => 'number')); ?>
    							<?php edit_post_link('Edit this entry.', '<div class="postsmetadata">', '</div>'); ?>
    						</div>
    					</div>
    
    				</div>
    <?php get_sidebar('block'); ?>
    <?php get_sidebar('right'); ?>
    <?php get_sidebar('left'); ?>
    <?php get_footer(); ?>

    Copy the index.php (page.php, or single.php, whichever has the layout you want to match i guess), remove what’s not needed, and add the comments bit at the top, update the query… save, done…

    p.s. Unless there’s another query on the page already, there’s no reason you can’t just use query_posts() instead ofnew WP_Query etc..

    Thread Starter substitute

    (@substitute)

    Ok the page.php doesn’t have any layout obviously …
    http://ace.dpwatch.com is the layout
    in the top navbar you have latest posts and you see what I got..no layout at all.

    I guess everything is in the index.php but I couldn’t tell…
    My goal is simply to have my latest posts on one page which should be done in a sec with ANY theme but that one, which puts it in a weird and crazy layout…

    Thanks

    index.php, single.php, page.php (theme files), are just like placeholders, then all have various blocks of code, each of them usually pulls in common data from the header and footer files to.

    See the template hierarchy information here.
    http://codex.wordpress.org/Template_Hierarchy
    http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

    All i’ve suggested you do is use one of your existing theme files as a template or basis with which to build your page template from.
    http://codex.wordpress.org/Stepping_Into_Templates (not template in the sense of page templates, but theme files)

    For additional “page template” examples and information, see here.
    http://codex.wordpress.org/Pages#Page_Templates

    Thread Starter substitute

    (@substitute)

    so I’ve duplicated the index.php and replaced

    <?php while (have_posts()) : the_post(); ?>

    with

    <?php $my_query = new WP_Query('showposts=10');
    
    while ($my_query->have_posts()) : $my_query->the_post();
    
    $do_not_duplicate = $post->ID; ?>

    And it doesn’t work so I may have to dig in further…I mean I’ve spent the whole day on this just to display my latest posts…this can’t be true ;-(

    The same rules apply as before, you still need to add the necessary comments at the top of the file, else it’ll not be read as a “page template” file..

    Ok let’s with something basic first then.. you can then add stuff as you go (it’ll be easier)..

    <?php
    /*
    Template Name: Example
    */
    ?>
    <?php get_header(); ?>
    <h2>Hello, this is my page template test.</h2>
    <?php get_footer(); ?>

    You can still make changes to the file after it’s attached to a page, so don’t worry about repeating the attaching process each time (incase you were wondering).

    Too much… too quick, don’t get ahead of yourself… πŸ˜‰

    Thread Starter substitute

    (@substitute)

    Oh I did put that :-)That’s my latest posts page
    and the result is…..this http://ace.dpwatch.com/latest-posts

    <?php
    /*
    Template Name: Latest Posts
    */
    ?>
    
    <?php get_header(); ?>
    				<div id="content">
    					<div class="contentbox">
    						<?php if (have_posts()) : ?>
    							<div class="boxheading"><span>Latest Posts</span><div class="clear"></div><div class="left"></div></div>
    							<?php $my_query = new WP_Query('showposts=10');
    
    while ($my_query->have_posts()) : $my_query->the_post();
    
    $do_not_duplicate = $post->ID; ?>
    
    								<div class="posts">
    									<h6 class="postheading" id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h6>
    									<?php the_excerpt(); ?>
    									<a href="<?php the_permalink() ?>" class="readmorelink">Read More</a>
    									<div class="postsmetadata">
    										Category : <?php the_category(', ') ?>.<br />
    										<?php the_tags( 'Tags: ', ', ', '.<br />'); ?>
    										<?php edit_post_link('Edit Post', '', ''); ?>
    									</div>
    								</div>
    							<?php endwhile; ?>
    							<?php if (show_posts_nav()) : ?>
    								<div class="postsnav"><span class="left"><?php next_posts_link('&laquo; Older Entries') ?></span><span class="right"><?php previous_posts_link('Newer Entries &raquo;') ?></span><div class="clear"></div></div>
    							<?php endif; ?>
    						<?php else : ?>
    							<div class="boxheading"><span>Error : Not Found</span><div class="clear"></div><div class="left"></div></div>
    							<div class="posts">
    								<p>Sorry, but you are looking for something that isn't here.</p>
    								<?php get_search_form(); ?>
    							</div>
    						<?php endif; ?>
    					</div>
    				</div>
    <?php get_sidebar('block'); ?>
    <?php get_sidebar('right'); ?>
    <?php get_sidebar('left'); ?>
    <?php get_footer(); ?>

    Sorry, does that mean it’s now working (i see various posts), or is there still a problem?

    You wasn’t clear in your reply.

    Thread Starter substitute

    (@substitute)

    this is how it looks

    http://ace.dpwatch.com/latest-posts

    this is how it should look, I mean how a page with posts should look
    http://ace.dpwatch.com/

    so no no it’s not working at all πŸ™‚ I get the posts but not the display…

    Ok, but the display is just a layout issue, the code works, it’s just not matching.

    This is why i had you copy one of you existing files, in an attempt to mimic the current layout (or close).. i’m assuming at this point you’ve had little experience with HTML (if i’m wrong, you should be able to fix it by just looking – and adjusting).

    Just about to jump in the shower, but i’ll take a look at your links when i get back, it’s proberly only a minor alteration, so if you’ve not sussed it by the time i’m back i’ll see if i can fix it for you.. (i don’t need a login to do it, i’ll provide code)..

    πŸ˜‰

    Thread Starter substitute

    (@substitute)

    oh that’d be a life savier..I am totally bad at those things..I can learn but this is not my thing frankly.
    It’s like trying to have a conversation in japanese using Google translate…I don’t totally understand what I am doing

    Btw the link to your website in your profile doesn’t work, if you want to take care of my website, be my guest :-)!
    It’s a lot of fun, you’ll see πŸ˜‰

    Ok, sorry for the delay…

    It looks to me, like there’s some invalid tags introduced…
    See here

    Looking at the template code (above), i see no immediate problem, no nesting problem, perfectly valid code, so i have to assume the invalid markup exists either in the header, footer or the posts themselves.. (or sidebars, see below).

    I can clearly see one of the elements on the new page is being closed prematurely, and i can only assume this is down to inproperly nested tags.

    Can you test the template, less some of the sidebar calls, to see if there’s any change..

    Thread Starter substitute

    (@substitute)

    I copied and pasted my index.php and replaced
    <?php while (have_posts()) : the_post(); ?>
    with the query post to display the last 10 posts.

    So How could that page be perfectly valid on all my post pages and not on this one since I didn’t do anything??

    I frankly don’t get it!
    I removed get footer and get sidebars…still not displaying corretcly.

    As far as the errors are concerned..most are related to the collected urls. This is an aggregator so I can’t be held responsible for the code written by others! If you look at all the errors it goes down to line 500 something and my code must be 25 lines long…

Viewing 15 replies - 1 through 15 (of 16 total)
  • The topic ‘Recent posts loop’ is closed to new replies.