0

I'm a little bit confused with the use of the Loop. This is my first theme and i just use index.php currently to display all my pages. It works fine for pages but have_posts return false when i try to display a single post. Here is the code of the index.php:

<?php
get_header();
?>
<div class="left">
    <?php 
    if ( have_posts() ) :
        // Start the loop.
        while ( have_posts() ) : the_post();
            //echo for debugging
            echo 'index<br>';
            echo get_the_ID().'<br>';
            //function to display page
            field_page_builder_front_display(get_the_ID(),get_post_type(get_the_ID()));
        endwhile;
    else :
        ?> 
        Sorry, this page does not exist
        <?php
    endif;
    ?>
</div>
<?php
//display custom sidebar
get_side_bar();
get_footer();
?>

This index.php return "Sorry, this does not exist" for all my single post (articles or custom post). I thought it was because the loop is only for displaying multiple posts but the file single.php of the theme twentfifteen use the loop too, so i don't understand the problem.

Thank in advance for all your help !

  • does it work when you make a copy of index.php and call it single.php? might not solve it but it's worth a try. – majick Apr 27 '16 at 9:31
  • index.php for work both single post, page or custom post type if single.php file not meet then default template call index.php. Look wordpress template hierarchy developer.wordpress.org/files/2014/10/template-hierarchy.png. – user5200704 Apr 27 '16 at 9:38
  • If you have just started theme development I highly recommend this YouTube Tutorial on WordPress Theme Development - it explains all the basics of what WordPress Templates are. – Stephen Apr 27 '16 at 12:07
-2

You don't have any posts query running probably.

Try this (added query_posts();)

<?php
get_header();
?>
<div class="left">
    <?php 
    query_posts( $args );
    if ( have_posts() ) :
        // Start the loop.
        while ( have_posts() ) : the_post();
            //echo for debugging
            echo 'index<br>';
            echo get_the_ID().'<br>';
            //function to display page
            field_page_builder_front_display(get_the_ID(),get_post_type(get_the_ID()));
        endwhile;
    else :
        ?> 
        Sorry, this page does not exist
        <?php
    endif;
    ?>
</div>
<?php
//display custom sidebar
get_side_bar();
get_footer();
?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.