Solved

PHP Script to check permalink structure in WP

Posted on 2009-05-11
2
393 Views
Last Modified: 2012-05-06
Those of you who have used Wordpress know that you can set your permalink structure with custom formats. What I want to know is if there is a way to run a php script within a plugin that will check how the user has their permalinks set up?

The reason I ask is because I have a plugin that generates a "Subscribe to comments" link for each post/page. This works 85% of the time because most people set up their permalinks like this:

/%category%/%postname%/

However, the other 15% of the time that it doesn't work is because someone either HASN'T set up their permalinks and is still using http://yoursite.com?p=40 - OR, they set up their permalinks like this:

/%category%/%postname%

The absence of the trailing slash at the end of the permalink completely ruins the subscribe to comments link that my plugin generates because it relies on that trailing slash being there so that the link will turn out like this:

http://yoursite.com/stuff/post-1/feed

Without it, the link turns out being output like this:

http://yoursite.com/stuff/post-1feed

So, I want to try to come up with a way that I can check how the user has their permalinks set up and then take the appropriate actions to always output the right link based on their permalink structure.
0
Comment
Question by:blatantwaste
2 Comments
 
LVL 7

Accepted Solution

by:
ycTIN earned 500 total points
ID: 24355720
use parse_url() or try below
<?php

detectUrlStyle("http://yoursite.com/stuff/post-1/");

detectUrlStyle("http://yoursite.com/stuff/post-1");

detectUrlStyle("http://yoursite.com/?p=40");

detectUrlStyle("http://yoursite.com/post.php?p=40");

detectUrlStyle("http://yoursite.com/post.php");
 

function detectUrlStyle($url){

	if (strlen($url) < 4) {

		echo 'invalid url';

	}

	

	$url = strtolower($url);

	

	if (false !== strpos($url,'?') || false !== strpos($url,'.php',strlen($url) - 4)) {

		echo 'default url style';

	} else {

		if ('/' == $url[strlen($url) - 1]) {

			echo 'permalink, end with /';

		} else {

			echo 'permalink, end without /';

		}

	}

	

	echo "\n";

}

?>

Open in new window

0
 
LVL 3

Author Closing Comment

by:blatantwaste
ID: 31580175
With a little modification that worked perfectly! Thanks!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

WordPress is constantly evolving, and with each evolution appears to get better and better.  One of the big drawbacks prior to version 3 was that there was no way to be able to set up a custom menu from the backend. The Old Way Adding menus is…
Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
This video teaches viewers how to create their own website using cPanel and Wordpress. Tutorial walks users through how to set up their own domain name from tools like Domain Registrar, Hosting Account, and Wordpress. More specifically, the order in…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now