So here is a requirement:
- Client wants a page template where there is two level menu on left
side of the page. - That menu can link to any page, post, category or a section within same page.
- The menu which links to a section within same page should be slash linked and not # linked for the purpose of SEO.
And this is how we have implemented it:
- Based on one requirement I have developed a custom page template
with sidebar on left. - Using WordPress menu I registered multiple menus with menu items as
per the requirement. - I developed a custom widget which provides an option to select a
menu to be assigned to that page. So far all good….
And here comes the question:
- How do I link the section within same page with
/
and not#
? - For example if the page is
http://example.com/event-page/
and there
is a section within page content say “Get Passes” and also a menu
corresponding to it on left. Now what client wants is that the menu
shall not be linked likehttp://example.com/event-page/#get-passes
but ratherhttp://example.com/event-page/get-passes/
- Needless to say that it should just scroll down to that particular
section without reloading the page.
1 Answer
You can use history.pushState
to change the browser URL without reloading a page, and jQuery’s scrollTop
method to scroll to the top of a specific element (and there are VanillaJS equivalents too). This will mimic the functionality of #
anchors.
However, like what Mark said, what your client wants is really weird. It is hard to maintain and keep working, and it might even hurt your client. Here’s a case study that you might want to show him/her.