Today I am going to show you how to clean up the wordpress wp_list_pages() function. Lets say I wrote the following code in my web design page:
<ul> <?php wp_list_pages('title_li=); ?> </ul>
This will print something like:
<ul> <li class="page_item page-item-1"><a href="http://www.mydomain.co.uk/" title="Home">Home</a></li> <li class="page_item page-item-2"><a href="http://www.mydomain.co.uk/about" title="About">About</a></li> … and so on.. </ul>
As you can see the href attribute contains the full url. This is not seo friendly and would be better if it were /pagename. The solution to this is to use the php string replace function. Copy and paste the following php code replacing the example domain with your full domain name.
<ul> <?php $clean_page_list = wp_list_pages('echo=0&title_li='); $clean_page_list = str_replace('http://www.mydomain.co.uk','',$clean_page_list); echo $clean_page_list; ?> </ul>
As you can see from the code above, I passed in the argument ‘echo=0′. This is important in order to assign the wp_list_pages() function to a variable. This is because wp_list_pages() echoes the result by default, therefore, putting ‘echo=0′ means it will return the result as a string, rather than echoing it.
Now navigate to your page and view the source code. You should notice that the html looks something like the below:
<ul> <li class="page_item page-item-1"><a href="/" title="Home">Home</a></li> <li class="page_item page-item-2"><a href="/about" title="About">About</a></li> … and so on.. </ul>
This is a lot tidier and more SEO friendly. You could go one step further and replace the li classes but I will leave that to you guys.