The easy way is to just make the home link an external type menu item.
Its what I do in nearly every project.
You can email me if you need more help jared – at – jaredritchey.com
I am aware using an external link for the home menu item, which is actually what I did. But as I stated in my original post, doing that you lose the ability use the ‘current_page_item’ var to style the home menu item to denote that it is selected.
It is useless to have a menu item that is un-stylable when it is selected. And also, using an external link as your home menu item just seems like a hack. When something that important should be built in the plugin.
ohh good point, I will fix that in the next release. The only way around that would be to use page assignment to a home page but thats for a CMS type setup.
I’ll get that fixed for you.
Thanks for pointed it out.
Jared Ritchey
Thanks for the quick response. Look forward to the update!
Ok will be in next release as a special option by checkbox.
Jared Ritchey
I solved it like this:
set type = wordpress and value to 0
function resolveURL($item) {
if ($item["type"] == "wordpress" && $item["value"] == 0)
return get_bloginfo( "url" );
if ($item["type"] == "wordpress") {
$id = $item["value"];
// Updated May 14th
$perma = get_permalink($id);
if(strpos($_SERVER["REQUEST_URI"], "wp-admin")){
$url = explode("/",$perma, 4);
if(count($url)>2)
return $url[3];
}
return $perma;
// End Updated May 14th
} else {
return $item["value"];
}
}
function displayMenuFromItems($items, $depth, $parent, $ismenu) {
global $post;
if ($items) :
echo "\n".'<ul id="' . ($ismenu ? "mc_menu_".$parent : "mc_submenu_" . $parent) . '" class="mc_menu mc_depth_' . $depth . '">'."\n";
foreach ($items as $item) :
$class="";
if ($item["type"] == "wordpress") {
if (is_page($item["value"]) || $item["value"] == $post->ID || ($item["value"] == 0 && is_home())) {
$class="current";
}
} else {
if (curPageURL() == $item["value"] || curPageURL() == $item["value"] . "/") {
$class="current";
}
}
echo '<li id="menu_item_' . $item["id"] . '" class="mc_menu_item ' . ($item["type"] == "wordpress" ? "wordpress_link" : "external_link") . ' ' . $class . '"><a href="' . resolveURL($item) . '" title="' . $item["alttext"] . '" rel="' . $item["target"] . '" >' . $item["title"] . '</a>';
if ($depth>0) displayMenuFromItems($item["subitems"], $depth-1, $item["id"], false);
echo '</li>'."\n";
endforeach;
echo '</ul>'."\n";
endif;
}
Hope this helps
Thank you sincerely. I’ll go through it today.
Jared
Jared, do you have an answer for the OP’s second question: Is it possible to create menu items for categories?
I’d imagine this is an extremely common use-case but I can’t find any documentation on doing this at all.
Thanks.
OK, here’s how I solved both of the OP’s issues. I changed line 181 of menu-creator.lib.php to:
if (curPageURL() == $item["value"] || $_SERVER["REQUEST_URI"] == $item["value"] || curPageURL() == $item["value"] . "/" || $_SERVER["REQUEST_URI"] == $item["value"] . "/") {
Then I can set Home with:
type = external
value = /
Categories as (for example):
type = external
value = /categories/events
And current_page_item is set correctly. I don’t want to hard-code the base path of my site anywhere as I know I’ll be moving it soon so this works for me.
Hi
If I do that, I get this error:
Parse error: parse error in C:\wamp\www\Thean\wp-content\plugins\wp-menu-creator\menu-creator.lib.php on line 184
Any ideas why?
I’ve tried both the suggestions above and the current_page_item class is still not showing up in the html. Anyone know why?
P.S. I’m using the WP SLIDER theme, so all my menu links are # (hash) values. Might this be causing the problem? And if so, anyway to modify the code above to work with # values?