WordPress.org

Ready to get started?Download WordPress

Forums

Getting previous post/next post to work (10 posts)

  1. j459g
    Member
    Posted 8 years ago #

    I have searched for this in the documentation and found some conflicting information and some unanswered posts in the forum:

    1. In the index.php of the three themes I have examined, the "previous post/next post" feature is handled with the following code:

    <p>
    <?php posts_nav_link('', __(''), __('« Previous entries')); ?>
    <?php posts_nav_link(' · ', __(''), __('')); ?>
    <?php posts_nav_link('', __('Next entries »'), __('')); ?>
    </p>

    This is not the way it is presented in the tutorial, which recommends simply:

    <? php previous_post(); ?> | <? php next_post(); ?>

    Which is the preferred method? Is this a question of downward compatibility for older WP versions? (I have WP 2.0.4)

    2. Whichever method or combination I use, I cannot get this feature to work correctly.

    The original code produces:

    <p>
    <a href="http://my_site/index.php?paged=2">&laquo; Previous entries</a>
    ·
    <a href="http://my_site/index.php?paged=2"></a>
    <a href="http://my_site/index.php?paged=2"></a>
    </p>

    The tutorial-recommended method produces only:

    <p> | </p>

    I would be grateful for some help as I am running out of steam.

  2. Samuel Wood (Otto)
    Tech Ninja
    Posted 8 years ago #

    posts_nav_link is used for displaying links to the previous and next *page* of posts. The homepage can display more than one post.

    previous_post and next_post are used on the single.php pages, which is what is used when a single post is displayed.

    See the codex for more information: http://codex.wordpress.org/Template_Tags/posts_nav_link

  3. j459g
    Member
    Posted 8 years ago #

    posts_nav_link is used for displaying links to the previous and next *page* of posts. The homepage can display more than one post.

    Thanks, Otto. The tutorial says:

    The posts_nav_link
    The first set of these site navigation links is featured only on the non-single/non-permalink web pages, such as categories, archives, searches, and the index page. It is the template tag posts_nav_link().

    The same tutorial (http://codex.wordpress.org/Next_and_Previous Links) continues to state that the "next post" and "previous post" tags are used on pages with posts.

    Am I right in thinking that this is exactly the opposite of what you are telling me?

    But I have tried both methods on my post pages and neither of them works.

    Anyway, what is the reason for using three post_nav_link commands with two empty parameters each when according to the tutorial the tag is:

    <?php posts_nav_link 'separator','prelabel','nextlabel'); ?>

    I found several instances of people asking questions on this subject but many went unanswered. Is that a bad sign?

  4. Samuel Wood (Otto)
    Tech Ninja
    Posted 8 years ago #

    Thanks, Otto. The tutorial says:

    What "tutorial"? I have no idea what you're talking about.

    Am I right in thinking that this is exactly the opposite of what you are telling me?

    No. That snippet pretty much exactly agrees with what I said. posts_nav_link() is used on pages other than the single post pages. Those tend to use previous_post and next_post.

    But I have tried both methods on my post pages and neither of them works.

    Then I'd say you're doing something else wrong. If it works in the default theme but not in your theme, then I'd say one of the differences between these themes is causing the problem, eh?

    Anyway, what is the reason for using three post_nav_link commands with two empty parameters each when according to the tutorial the tag is...

    The only reason I can think of to separate them into seperate calls like that is that the theme author wants to wrap each link in its own individual DIV or SPAN or something. Otherwise, it's pointless.

    I found several instances of people asking questions on this subject but many went unanswered. Is that a bad sign?

    No, it's a sign that people have not read the codex on the subject, despite the many links posted that point to it.

    http://codex.wordpress.org/Template_Tags/posts_nav_link
    http://codex.wordpress.org/Template_Tags/next_post
    http://codex.wordpress.org/Template_Tags/previous_post

  5. j459g
    Member
    Posted 8 years ago #

    What "tutorial"? I have no idea what you're talking about.

    The opening page calls the collection "WordPress Lessons" and that makes it a tutorial in my English.

    href="http://codex.wordpress.org/WordPress_Lessons

    But I will gladly call it "lessons" if you prefer the term.

    That snippet pretty much exactly agrees with what I said. posts_nav_link() is used on pages other than the single post pages.

    Strange. The "such as" in my quote does not mention pages with posts on them, it limits the use of post_nav_link to "categories, archives, searches, and the index page".

    posts_nav_link() is used on pages other than the single post pages. Those tend to use previous_post and next_post.

    I understand "single post pages" to refer to pages with permalinks, i.e. pages carrying the owner's dated posts. I have had WordPress for only 3 days so I am still finding my way with the terminology which seems to be quite clear in this area:

    Previous_post: "Used on single post/permalink pages, this tag lists the previous post in chronological order from the current post."*** (Next_post is similar).

    Post_nav_link: "For the index, category, and archives, use the posts_nav_link() tag."***

    *** http://codex.wordpress.org/Template_Tags/previous_post

    Then I'd say you're doing something else wrong. If it works in the default theme but not in your theme, then I'd say one of the differences between these themes is causing the problem, eh?

    I would gladly agree with you but for the fact that I am unable to detect any difference. In any event, I have tried all the permutations and combinations I could think of but that did not help. I must confess that it did cross my mind that this is a phenomenon peculiar to version 2.0.4.

    No, it's a sign that people have not read the codex on the subject, despite the many links posted that point to it.

    Quite possibly, but that does not apply to me because I have read them all, word by word, and have followed the syntax to the letter, comma, and all the others.

    Certainly in the first one you cite (post_nav_link) it says only "There is currently no text in this page" so reading it helps little. There is another that you didn't mention but from which I quoted (Next_and_Previous_Links) and that gives the syntax for previous_post as:

    <?php previous_post(); ?>

    with parameters: format, text and title, i.e. effectively:

    <?php previous_post('format', 'previous', 'title'); ?>

    whereas in the document previous_post the syntax is given as:

    <?php previous_post('format', 'previous', 'title', 'in_same_cat', limitprev, excluded_category); ?>

    which is quite a difference. That is what I meant by "contradictions".

    Nevertheless, I have tried all of them and not one of them works for me so, as you say, the question is: "What am I doing wrong?"

    I notice that there are other questions from people with a similar problem so I just might not be alone.

  6. j459g
    Member
    Posted 8 years ago #

    Hi, Otto!

    I just downloaded and examined the WP default theme ("Kubrick") and found that its previous/next code is also a little odd:

    <div class="navigation">

    <div class="alignleft">
    <?php next_posts_link('&laquo; Previous Entries') ?>
    </div>

    <div class="alignright">
    <?php previous_posts_link('Next Entries &raquo;') ?>
    </div>

    Why is the previous_posts tag given a "Next Entries" label while the next_posts tag is given a "Previous Entries" label?

    This seems to me in my innocence to contradict both the "Lessons" and normal logic.

    The syntax is also non-conform. It should at least be:

    <?php previous_posts_link('','Next Entries »','') ?>

    according to the usual convention for passing parameters.

    Anyway, I tried putting each tag between DIVs but that made no difference. The HTML shows two <DIV></DIV>s but nothing in between them!

    Is there a present/next guru on this forum? Or is that you?

  7. Samuel Wood (Otto)
    Tech Ninja
    Posted 8 years ago #

    Strange. The "such as" in my quote does not mention pages with posts on them, it limits the use of post_nav_link to "categories, archives, searches, and the index page".

    Categories, Archives, Searches, and the Index page all have posts on them. They can have only one post or many posts.

    I understand "single post pages" to refer to pages with permalinks, i.e. pages carrying the owner's dated posts.

    Your terminology is unclear. Single post pages are pages with Permalinks for URL's. Page that show *only* that one post. If you go to your blog and click on the title/header of any post, it will go to the single post page, for just that post.

    Certainly in the first one you cite (post_nav_link) it says only "There is currently no text in this page" so reading it helps little.

    That's posts_nav_link. With an S at the end of posts. The links I posted above are correct, and do not go to empty pages.

    which is quite a difference. That is what I meant by "contradictions".

    It's not a contradiction. Some parameters are optional.

    Why is the previous_posts tag given a "Next Entries" label while the next_posts tag is given a "Previous Entries" label?

    It's a design decision. "Next" refers to the next post chronologically. However, most blogs work backwards in time, displaying the most recent posts first.

    I admit this aspect of previous/next can be tricky.

    Nevertheless, the fact remains that you use previous_post and next_post on single pages, and posts_nav_link on most other pages.

    Also, these functions won't display anything at all if there's no previous/next post to actually go to. That's sort of the point. You actually have to have multiple posts in order for them to display a link to the next post. In the case of posts_nav_link, you actually need to have another *page* of posts for it to display.

  8. j459g
    Member
    Posted 8 years ago #

    Hi, Otto!

    Firstly, thank you for being so patient. I am beginning to see something through the fog but after spending about 10 working hours on this little problem, I still cannot get the previous/next facility functioning logically or as advertised so I have commented it out everywhere. I will leave it as "unresolved" for now and will come back to it when I have a little more experience with WordPress and php.

    On the matter of needing to have posts to go back or forward to: Sure! I have created plenty of posts (the whole of August) by editing the dates, that should not be a problem. The problem is that whichever theme I try, the previous/next facility does not work the way I think it should right out of the box so it is not as if I broke something!

    Thank you for the help anyway!

  9. Samuel Wood (Otto)
    Tech Ninja
    Posted 8 years ago #

    I don't know what to tell you except to once again point you to the codex, which is as definitive of documentation as there is.

    These three links contain everything you need to know about how to use these functions. They do work as advertised. I'm using them. Every WordPress site uses them. They're not complicated, really. Just don't make assumptions, and read the stuff carefully. It's quite clear and just I don't know anything more to tell you on the subject.

    http://codex.wordpress.org/Template_Tags/posts_nav_link
    http://codex.wordpress.org/Template_Tags/next_post
    http://codex.wordpress.org/Template_Tags/previous_post

  10. timoni
    Member
    Posted 7 years ago #

    This discussion seems to be over, but for other frustrated folk:

    <?php previous_post(); ?>

    Didn't work for me, even though I lifted it straight from the Codex. On the index.php page, I had to add an "s" to posts for it to work, as in:

    <?php previous_posts(); ?>

    This is on WP 2.2.

Topic Closed

This topic has been closed to new replies.

About this Topic