Page Menu Editor

Latest Version: 3.0
Works on: From version 2.5+
Last Update: 5th June 2017

Update Log

1.1 – I realised you couldn’t remove a label or attribute value once it had been set. This has now been rectified.
1.2 – Have now combined the two boxes into one section. It now appears at the top of the Advanced Options.
1.3 – Fixed an issue with version 1.2
1.4 – Minor fixes plus stripping out the added backslashes
1.5 – There is no 1.5 really, I just messed up the SVN update in the WP repository for version 1.4!
1.6 – Added in a migration function to allow you to migrate your settings over to the new All in one SEO pack plugin (if you use it) as it now uses the same code.
1.7 – Set the plugin priority to 1 as certain other menu plugins are getting their changes in first and preventing the plugin working.
1.8 – Some error fixes
1.9 – Couple of minor fixes to remove error messages showing for some.
1.9.1 – Fixed the insufficient priviledges error showing for some. Added in a couple of tags for the title attribute to replicate either the page title or menu label.
2.0 – Finally have managed to get this working with the link_before and link_after parameters, which means anyone with additional tags (such as <span> tags) within the link to make it easier for using images shouldn’t find their tags being stripped out now. Also tidied up the admin on the add/edit Page.
2.0.1 – Had to revert some of the code to fix an issue that 2.0 caused with menus and child menus.
2.0.2 – Fixed the code to work with the link_before and link_after tags.
2.0.3 – Minor bug fix where the link to the settings page was wrong (only showed up for All in One SEO pack users).
2.0.4 – Minor bug fix to remove some HTML comments that caused layout issues in MSIE.
2.0.5 – Upgraded to work with WP 3.3 which not longer contains title attributes by default.
2.1 – Rewritten the code to make it more efficient and flexible, added in an All in One SEO pack import option.
2.1.1 – Bug fixes on migration and errors showing.
2.1.2 – Bug fixes (thanks to Mark Anderson for the pointers)
3.0 – Code overhaul/modernisation, PHP improvements, documentation

The Plugin

The Page Menu Editor allows you to customise the menu label and title attribute of any Page link that’s being displayed with the Template Tag wp_list_pages(). Originally, by default WordPress gave the title attribute of any page link the same text as the anchor text and I felt there was no point repeating the same text, it’s a complete waste of time in my opinion. You should only use a title attribute on a link if you need to expand on the already given anchor text e.g. If the anchor text is ‘Home’ then you could have the title attribute as ‘Return to our Front Page’. Since WordPress 3.3, this has been removed and there is no title attribute by default.

This plugin allows you to have a different menu label to the page header (by default both are usually the same) and add a title attribute for any page you want to, and if you don’t then no title attribute will be set. It’s mainly been written for sites using WordPress as a CMS however can still be useful to anyone who has one or more pages on their site that are displayed using the wp_list_pages() tag.


  1. Download the Plugin and unzip it.
  2. Upload it to your plugins directory and activate it via the Plugins section.
  3. Go into Manage – Pages and edit an existing page OR go to Write – Page. Below the content area you’ll see two new boxes – Page Menu Label and Page Link Title Attribute See Figure 1.
  4. Fill this out with the text you require and Save or Publish the page.
Figure 1: Page Link Title Attribute Form Box
Page Menu Editor Screenshot
Figure 2: Title Attribute Showing on Link Hover
Title Attribute Screenshot

It’s a pretty simple plugin and at present there are no options as I can’t really think of any to offer! Any requests please leave them in the comments below and if I can I’ll add them in. Any problems also leave them below or feel free to make any suggestions over on the repository at GitHub.

223 Responses

  1. Hi Sarah – thanks for a very helpful plugin!

    I’m getting ‘deprecated’ warnings from the plugin because you refer to old style userlevels. To fix you need to change line 144 from:
    add_options_page(‘Page Menu Editor’, ‘Page Menu Editor’, 8, basename(__FILE__), ‘pta_upgrade’);

    to something like:
    add_options_page(‘Page Menu Editor’, ‘Page Menu Editor’, ‘manage_options’, basename(__FILE__), ‘pta_upgrade’);


  2. Sarah says:

    Hi Mark, Just to update that I’ve fixed the plugin for this (bit delayed, I blame pregnancy..!).

    However, also realised, the reason I didn’t catch on this is that you’ll only get the error if you’re running the All in One SEO pack and my plugin together. The AIO SEO Pack incorporates my plugin into it, so mine isn’t needed if you run the other 🙂 I’m sure you noticed this, just wanted to make sure you did!

    Cheers again anyway!

  3. Thanks for the update & fix. FYI I’m not running AIO SEO. I did have error reporting cranked, though, up which is why the deprecated error showed up.

  4. Jay Collier says:

    Thank you so much for updating your plugin this month.

    I’d received a fatal error with a previous version, and had to use A1O … when all I needed was the function your plugin provides. Now I can.

    Clean and simple. Works great!

  5. Hi Sarah – thanks for updating. I should have noticed this before, but the plugin is generating ‘undefined constant’ notices. I think all you need to change is on lines 133 and 161 where you have
    if (function_exists(aioseop_get_version))

    change to:
    if (function_exists(‘aioseop_get_version’))

  6. Sarah says:

    Thanks Mark. That will possibly explain my previous comment as to why you shouldn’t have seen the other error!

    I’ll get that updated later today.

    Guess I should turn the error reporting up on a test site for my plugins! To be honest they were thrown together for personal solutions and just released into the wild.

    For anyone who wants to venture into more flexibility, the new custom nav menus allow you to change the anchor text and title attribute of links anyway, and you can reorder things easily, link to pages, categories, individual posts and custom links in one menu.

    Expect a blog post soon on that and plenty of other new features, hopefully before the baby arrives 😉

  7. Great thanks. Yes, cranking up the error reporting uncovers all manner of things (speaking from experience!).

  8. Steve says:

    Hi sarah,

    Great plugin – I tried using All in one SEO and it messed up the theme I am using.

    One question I did have was about breadcrumbs, is it possible to set the breadcrumbs so that they read the menu name rather than the page name?

    Otherwise I end up with these long breadcrumbs that don’t look great.



    • Sarah says:

      Hi Steve, you’d have to code a new breadcrumbs plugin to use the correct post meta, it won’t pick it up automatically. Possible whoever coded your breadcrumbs plugin could look at an integration? I’m due to have a baby in a few weeks so not in the position to help I’m afraid!

  9. Anon says:

    Hi ,

    This is marvellous! I’ve been building some sites for clients using WordPress and static pages as a CMS, this is something that’s disturbed me for a little while.

    One of the other great tension is that the H1 or H2 page title (as opposed to the title=”blah blah blah” with the actual anchor text of the link) always defaults to the same as the anchor text for the link. For example, when you click one of the links above on this page (ie the “learn PHP” link), the page title and headline on the page you are taken to are the same as the anchor text in the link you clicked.

    This is absolutely craptacular for SEO. I know using the All in One SEO plugin I can change the actual text between the title tags, but do you know of a way to change the H1 / H2 text that appears as the headline on that static page?

    Thanks, and great to see you back here!

    • Sarah says:

      Hi there. I’m a little lost on your comment. First off, I’m not overly fussed on SEO for my personal blog and Learn PHP is pretty straight to the point, why add to it?

      Secondly, your question of changing the heading text on a static page, you can do this by using the All in One SEO plugin. The AIOSP allows you to set a different title, anchor text and title attribute, which then leaves you with the core ‘Page Title’ field on the page to show up when you use the_title() template tag. However, personally I would aim to keep the page heading and title the same (besides the site title after the page title). You want repetitive (within reason) keywords for SEO, not a different phrase for each of the two most important sections of the page.

  10. Renee says:

    Hi, do you know if I can change the URL of the link? I would like the link to go to a completely different website…is this possible?

    • Sarah says:

      Hi Renee, you will either need the “page links to” plugin or use the new custom menu feature which would be the better solution as no plugin would be needed then (mine included) 🙂

  11. Martin says:

    Hi Sarah,

    We’ve installed the plugin and it works ok as we can tweak the page keywords in the navigation menu, but the menu visual/images disappear on

    When the plugin is activated the only thing left are the words in the menu. We’re using Headspace.

    Any idea where there could some conflict?

    Thanks in advance.


    • Sarah says:

      Hi Martin, my plugin requires an unedited wp_list_pages() output. It won’t work with another menu altering plugin as it requires a specific pattern to find to update the listings. To use images in your menu you should really use CSS and image replacement.

  12. Paul V says:

    This plugin is very handy indeed and works really well but the pattern matching approach means that it doesn’t respect link_before and link_after if they’re used on the wp_list_pages function, which can be a problem sometimes. I don’t know if you’re still updating the plugin but a tweak to the pattern matching to check if there is any HTML after the anchor element is closed would be very useful.

    • Sarah says:

      Hi Paul, unfortunately I’ve tried to get the pattern matching to work with before and after tags but I couldn’t get the right pattern working and I have no time now due to having a 7 week old baby who takes all of my time! My biggest recommendation is to use the WordPress custom menus and then you have no need for this plugin.

  13. Anuradha says:

    Hi Sarah,
    After installing and activating the plugin, there a notice (i.e: Please visit the Settings Page for the Page Menu Editor) shows up inside red box and when I click settings page link I get an error called “You do not have sufficient permissions to access this page”

    How do I solve this?

    • Sarah says:

      Hi Anuradha, I don’t know why the message is coming up however if you’re seeing the settings page then in theory it means you have the All in One SEO Pack installed, and if you do then you don’t need my plugin as the AIOSP incorporates my plugin.

  14. Anuradha says:

    Thanks for quick reply. I’ll try to deactivate AIOSEO and see. 🙂


  15. Dave says:

    I see the fields to fill in, but nothing seems to happen on the page. The current theme is: Arclite 2.02 by digitalnature. I can send you a PDF of what fields appear, as I’m not certain what other information would be helpful.

    Any thoughts?

  16. Prygi says:


    very useful plug-in but have one question. How can I make it work if my page is multilingual (qTranslate)?

    For example: in my page I use Estonian as default language and English as second choice.
    I can edit title in both languages (“Meist”/”About us”) but for Page Menu Label I only have one option – either in Estonian or in English…

  17. The “You do not have sufficient permissions to access this page” error on the page for transitioning to using All in One SEO Pack is due to a misnamed role in the add_options_page function call on line 144. It should be ‘update_plugins’, not ‘upgrade_plugins’.

  18. Sarah says:

    Sorry for the late comment approvals and replies. If you’ve not seen the most recent post on this site, we had a baby just 5 months ago and he’s taking up pretty much all of my time!

    Dave, your issue is most likely down to a different template tag or menu system being used in your theme. If your theme is up to date then I would suggest looking at the custom admin menu system that is now available, as that uses the theory behind this plugin, allowing you to change the menu label and title attribute, and gives a much better control over the menu.

    Prygi, I’ve never really worked with a multilingual site like that before. I would recommend looking into how the site selects which page to show and possibly look into using custom fields and working those into it. We have set up a multilingual site in WP before, and used a custom field to set the language type and then this allowed us to set further fields for different language options etc.

    Eric, thanks for the fix, I’ll get that sorted out. I noticed that in a different plugin too. I blame baby brain and not thinking straight last year when I last updated them all 😉

  19. Razvan Neagu says:


    First of all, thanks for a great plugin, really useful. I first became aware of its functionality by using the All-In-One-SEO plugin. I started looking for this same functionality once I moved to the new, and more comprehensive Yoast’s WordPress SEO plugin – which lacks your code.

    I searched and found your plugin. This way I can have a longer, keyword rich, page title (the H1 on the page) but can now have a short-and-sweet page “label” to appear in my sidebar (using the Nice Navigation plugin) – e.g.

    Feature Request:
    What will make your plugin even more useful, if you do not mind my suggestion – and I think it will benefit your other users – is to have the Page Link Title Attribute default to the initial Page Title.

    Here is my reasoning:
    If a user decides to use a custom Page Menu Label, it means it is something different than the default Page Title. I agree with your expressed position that is useless to have the Title Attribute replicate that same value. But why not have it default to the original Page Title? For SEO purposes, the page “definition” will be richer.

    What do you think?

    So IF your plugin user fills in the Page Menu Label field AND leaves empty the Page Link Title Attribute, THEN the Page Title will be used for it.

    If you think there is a downside to this automation, maybe there will be a checkbox (checked by default) to use the Page Title. If unchecked, there will be no Title Attribute.

    Or, if you have time for richer functionality, maybe a plugin admin screen where the user can decide the what value should be used for the Title Attribute: 1) %%page_title%%, 2) %%page_label%%, 3) none, etc.

    Makes sense?

    • Sarah says:

      Hi Razvan, glad you like the plugin. I’ve recently become aware of Yoast’s SEO plugin and am starting to switch over to it on all of my own sites too. With regards to your feature request I can look into doing that when I can fit it in. Time’s a little tight at the moment as I have a 7 month old to entertain too, but I’ll look into it as soon as I can 🙂

  20. Razvan Neagu says:

    Sarah, I understand; thanks for your response.

  21. Sarah, I’ve been using your Page Menu Editor with excellent results on shortening menu titles.

    But, I just upgraded from Artisteer 2.x to 3.x and to my horror discovered that themes generated with Artisteer 3.x break the Page Menu Editor Plug In.

    I value Page Menu Editor so much that I have gone back to using Artisteer 2.x.and will not use Artisteer 3.x until it works with Page Menu Editor.

    Can you look into this? Pleeeese!! Since so many people use Artisteer you would probably be making a lot of your users very happy. I will donate again to your plug-in if you can get it working with Artisteer 3.x. Thanks in advance.

  22. Sarah says:

    Hi Robert, I’ll need an example of a theme from Artiseer as it’s a paid for framework and so it’s not something I can get hold of (without paying out of course, which I can’t afford to do).

    If you can email me a copy of the theme you had created, or put up a temporary site with the theme on and send me a message via my contact form with a link, then I can take a look and see if I can alter the plugin to work with it.

  23. Sarah says:

    To all those users who have had a problem finding their span tags (or other tags) stripped out when using this plugin, this is now fixed, and should work fine.

    Apologies for it taking so long to fix. Been one of those years! Version 2.0 will allow for link_before and link_after parameters set in wp_list_pages().

  24. Jaiji says:

    Hi Sarah

    I was just doing some work for my client on the Kelburn Garden Party website, noticed that version 2.0 of PME was out and upgraded immediately. However, when I checked the site, the main menu was broken, with all PME edits missing and only the first half of the menu items keeping their intended styling. The second half were unstyled, and on inspection it seems that the UL for the menu had closed prematurely, leaving loose LIs (hence no styles). I reinstalled version 1.9 and everything is now fine. I’ll probably do as you suggest and use the WP custom menus from here on in, but I thought it might be helpful to let you know about this.

    • Sarah says:

      Thanks for letting me know Jaiji. I realise I hadn’t accounted for menus with child menus so I’ve reverted the change back that caused the breakage. 2.0.1 Should fix any issues you had with 2.0. But yes, the custom menus are a much cleaner idea as you need one less plugin loaded 🙂

  1. Wed, 21 July, 2010

    […] Menu Editor (also built into All in One SEO plugin) (by Sarah Anderson). Many themes offer a top bar navigation where the Title is the same as the link (such as Home, […]

Leave a Reply

Your email address will not be published. Required fields are marked *