WordPress.org

Ready to get started?Download WordPress

Forums

Exclude Current Page from wp_list_pages (5 posts)

  1. kalico
    Member
    Posted 6 years ago #

    I want to display a list of links to child pages, but I want to exclude the current page being viewed. I have been all over the codex and forums, and as yet have no solution to this.

    Here is my existing code:

    <?php
    if($post->post_parent)
    $children = wp_list_pages("title_li=&depth=1&child_of=".$post->post_parent."&echo=0"); else
    $children = wp_list_pages("title_li=&depth=1&child_of=".$post->ID."&echo=0");
    if ($children) { ?>
    <ul>
    <?php echo $children; ?>
    </ul>
    <?php } ?>

    This works perfectly to show the child pages, and only the child pages, when on a parent or on one of the children. (This is straight from codex.) However, it shows a link to the current page, which is undesirable. I realize I could use exclude=ID, but then I'd have to write a zillion if statements. I don't want to use a hardcoded page ID.

    What I want is a clean solution that simply excludes the page we're on....I thought I could just add exclude=".$post->ID." or something to that effect....but I'm no PHP coder, and no variation of this seems to work. Either it displays the list just as it is, no effect -- or it breaks the menu.

    Can someone please tell me the correct php code to fit the above existing code?

    Thanks in advance!

  2. Roger Theriault
    Member
    Posted 6 years ago #

    You followed the guidelines on http://codex.wordpress.org/wp_list_pages and it didn't work? Please post the code that "broke".

    Try some css. Take a peek at the xhtml generated... notice a class applied to the list item for the current page?

    .current_page_item {
       display: none;
    }

    This is also documented on the wp_list_pages page in the Codex.

  3. kalico
    Member
    Posted 6 years ago #

    Thanks Roger. The code from the Codex is working perfectly. But it doesn't include the "exclude" parameter. I realize I could hard code all the pages I want to exclude, but it would be a lot less clean than using a php statement based on the ID of the current page. (I think...but I'm only a novice at php!)

    The code that keeps breaking it is when I add the "exclude" parameter to the wp_list_pages like this:

    &exclude=".$post->ID."

    There is something wrong with the PHP code I"m sure....double quotes, single quotes, periods, whatever....something that's causing it to break my otherwise functional statements in the OP.

    Any corrections to my php would be great!

    I'm going to try your suggestion about using CSS (didn't think of that) but right now I've got an entirely different problem that's breaking my pages, so I have to correct that first so I can even SEE the stuff I want to fix.... :)

  4. Roger Theriault
    Member
    Posted 6 years ago #

    Your php chunk as you posted it is fine, if you're inserting that in the middle of the first wp_list_pages at the right position. But what I was asking for was the whole section of code in context.

    If you can post the entire line of error-causing code, and describe more precisely what happens (does it generate a syntax error message? maybe post the xhtml it does generate?) then something may stand out.

  5. DeeMo
    Member
    Posted 5 years ago #

    <?php
      if($post->post_parent)
     $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&exclude=".$post->ID."&echo=0");
      else
      $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
      if ($children) { ?>
      <ul>
      <?php echo $children; ?>
      </ul>
      <?php } ?>

    I'm no php coder but I had your same problem and I think I made this to work.
    I think you miss the
    "&echo=0"

    Asking coders if this is correct and eventually why.

Topic Closed

This topic has been closed to new replies.

About this Topic