Underline the Current Page's Title in menu

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dominoeffect
    New Member
    • Sep 2008
    • 8

    Underline the Current Page's Title in menu

    Hey all!

    I'm building a site for a friend which uses this Wordpress theme:



    ^ As you can see by visting the site, the title of the current page is always underlined on the main menu.

    In the code the menu is displayed by this code:

    Code:
    <li <?php if(is_home()){echo 'class="current_page_item"';}?>><a href="<?php bloginfo('siteurl'); ?>" title="Home">Home</a></li>
    
    <?php wp_list_pages('title_li=&depth=1');?>
    and a snippet of css in the stylesheet:

    Code:
    .current_page_item a {
    
    color:#000;
    
    text-decoration: underline;
    
    }
    I want to add links to category pages in the menu, but if I add an example like this to the menu:

    Code:
    <a href="blahblah.com/cat/videos">Videos</a>
    There is no underline for that page.

    Does anyone know a way that I can achieve the same underline effect for non-Pages I add to the menu?

    There must be some way to adapt this code for other URLs?

    Code:
    <li <?php if(is_home()){echo 'class="current_page_item"';}?>><a href="<?php bloginfo('siteurl'); ?>" title="Home">Home</a></li>
    If anyone can help I'd be hugely grateful, thank you in advance!
  • Dormilich
    Recognized Expert Expert
    • Aug 2008
    • 8694

    #2
    put your link in an element (li, div, span, ...) that contains the current_page_it em class.
    Code:
    <span class="current_page_item">
      <a href="_your_uri_">_link_text_</a>
    </span>
    regards

    Comment

    • dominoeffect
      New Member
      • Sep 2008
      • 8

      #3
      I might be wrong but I don't think that would work.

      I want the underline to appear only on the page currently being browsed by the visitor. If I added the above bit of code, would it not always apply the underline?

      Thanks,

      Comment

      • David Laakso
        Recognized Expert Contributor
        • Aug 2008
        • 397

        #4
        Originally posted by dominoeffect

        There must be some way to adapt this code for other URLs?

        Code:
        <li <?php if(is_home()){echo 'class="current_page_item"';}?>><a href="<?php bloginfo('siteurl'); ?>" title="Home">Home</a></li>
        Try the PHP forum PHP forum

        Comment

        • dominoeffect
          New Member
          • Sep 2008
          • 8

          #5
          Thanks for the help all,

          I will move this conversation to the PHP forum, cheers.

          Comment

          • eWish
            Recognized Expert Contributor
            • Jul 2007
            • 973

            #6
            Moving to PHP Forum.

            --Kevin

            Comment

            • Dormilich
              Recognized Expert Expert
              • Aug 2008
              • 8694

              #7
              Originally posted by dominoeffect
              There must be some way to adapt this code for other URLs?
              Code:
              <li <?php if(is_home()){echo 'class="current_page_item"';}?>>
                  <a href="<?php bloginfo('siteurl'); ?>" title="Home">Home</a>
              </li>
              do you know, how the is_home() function works? then you could it adapt for categories too.

              Comment

              • dominoeffect
                New Member
                • Sep 2008
                • 8

                #8
                Originally posted by Dormilich
                do you know, how the is_home() function works? then you could it adapt for categories too.
                Dormilich: I have no idea how the is_home() function works.

                Do you have any idea?

                Repeating it for categories would be perfect.

                Thanks

                Comment

                • Dormilich
                  Recognized Expert Expert
                  • Aug 2008
                  • 8694

                  #9
                  option 1 - you have access to the server and the function is defined somewhere in a script file on the server - just scan the script files for this function

                  option 2 - is_home() belongs to a wordpress hosted script - no luck

                  option 3 - there is a wordpress documentation

                  option 4 - write your own is_category() function

                  for option 4 I'd like to see more of the script, because this function also depends on how the category menu is build. as a general idea the function would probably compare the siteurl with the category link (e.g. preg_match()).

                  regards

                  Comment

                  • dominoeffect
                    New Member
                    • Sep 2008
                    • 8

                    #10
                    I think option 3:



                    I am wholly uneducated in PHP so I hope you can confirm or deny my theory, that I should be able to get the result I want using the structure below.

                    Code:
                          <li <?php if(is_home()){echo 'class="current_page_item"';}?>>
                              <a href="http://homepage.com" title="Home">Home</a>
                          </li>
                    
                        <li <?php if(is_category('9')){echo 'class="current_page_item"';}?>>
                              <a href="http://homepage.com/cat/apple" title="Posts Filed in Apple">Apple</a>
                    
                        <li <?php if(is_category('10')){echo 'class="current_page_item"';}?>>
                              <a href="http://homepage.com/cat/windows" title="Posts Filed in Windows">Windows</a>
                    For the record: categories are each given a numeric value besides its name, Apple might be 9, Windows might be 10, and so on, like I've shown here.

                    Comment

                    • Dormilich
                      Recognized Expert Expert
                      • Aug 2008
                      • 8694

                      #11
                      That's exactly how I would do that. despite is_category() fires only if the page displayed is the category's top page, maybe you want to go for in_category() (marking all pages that belong to that category)

                      regards

                      Comment

                      • dominoeffect
                        New Member
                        • Sep 2008
                        • 8

                        #12
                        Thanks for the great advice, I truly appreciate your help!

                        Will repost here to let you know how I get on.

                        Best,

                        Comment

                        Working...