WordPress.org

Forums

[resolved] Page slug as li id (6 posts)

  1. Tdude
    Member
    Posted 8 years ago #

    Hi!
    I'm probably just plain stupid and there may be a better way:
    I hacked the 2.06 WP (template-functions-post.php) to get my page slugs (or id #) as css id's. Now with 2.1 and new "walk" function code in classes.php, my head is spinning.
    Does anyone have a bright idea of how to do it? What I want to do is (yes I know you shouldn't) replace the page link list with images via css.

    Relevant hacked code (from 2.06 template-functions.php around line 420):
    $tdude_page_slug = attribute_escape($cur_page['name']);

    and a few lines down:
    $output .= $indent . '<li class="' . $tdude_page_slug . '"><a href="' . get_page_link($page_id) . '" title="' . $title . '"><span>' . $title . '</span></a>';

    Note: I know there is a Text replacement plugin. I want my link text warped, so the plugin is no option.

    A last word: I want to thank all the contributors and writers of the documentation to this fantastic app! When I get better at it, I'd love to give something back.

  2. Tdude
    Member
    Posted 8 years ago #

    OK. Not a big deal. If you want your css li to show a slug as the id for each list item, change your wp-includes/classes.php somewhere around line 516 to something like this:
    // haxed by Tdude to give an id for the css
    // observe extra variable $post_name initiating function
    $output .= $indent . '<li class="' . $css_class . '" id="' . attribute_escape($page->post_name) . '"><a href="' . get_page_link($page->ID) . '" title="' . attribute_escape($page->post_title) . '"><span>' . $page->post_title . '</span></a>';

    It's not a big hack codewise, just add a variable. The thing is I searched these forums for days (ok, nights) and didn't find the answer.
    Remember, you can add several classes to an element, but only one id. That means using a numeric ID would probably be a better option. The site I'm using this for needs an understandable name in the css for li id's and the corresponding background images, hence the hack. I know the sky will probably fall on my head using this with many javascript id's in the plug-ins, but I'm using non-english slugs for the pages and li id's, so I'll probably be ok.

  3. kath
    Member
    Posted 8 years ago #

    Thanks, I needed to do this :)

  4. brobro
    Member
    Posted 8 years ago #

    this is an excellent hack. it makes handling menu items much more flexible! cool cool cool..

  5. Using ID's for this is not a particularly good idea, since the call to list the pages can be made more than once on the page. Using a class would be better.

    So I would recommend changing line 510 to this:
    $css_class = 'page_item page_item_'.$page->ID;

    This will give you a page_item_number class on the item, where the number is the page's ID. You can then use the class to style it via CSS.

    Additional: Added this to trac so that it might get included in a future version: http://trac.wordpress.org/ticket/4703

  6. Tdude
    Member
    Posted 8 years ago #

    Otto 42, you´re probably right. That's why I stated the little fineprint on the last 6 rows of my post ;)
    Nevertheless, thanx for the ticket. I tend to think that somebody must have gotten the idea before me all the time...

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags