There are various SEO plugins available for WordPress, but let’s say you have some unique needs or for some other reason want to write your own. How would you go about doing that?
Well, this tutorial is going to show you how to write a very simple plugin to place a basic keyword meta tag in the head of specific posts in WordPress. (Note: this is not an advanced course in SEO plugin development. The purpose here is to give you some foundational information that can be applied to more advance projects.)
We are going to do the process in a simple function.
function my_very_simple_meta() { ... some code here ... }
Keywords will be stored in a custom field for the post so we will need to know the post ID. The my_very_simple_meta function will be run outside the Loop, so we will need to find the ID using a method other than the_ID(); .
We will declare the $post global and use $post->ID to return the post’s id.
function my_very_simple_meta() { global $post; $postID = $post->ID; }
As I said, we are going to store the keywords in a custom field for the post. To retrieve that, we use the WP function get_post_custom_values. This function needs to know the custom field name and the post id (which we retrieved above). (For more information, see the WordPress Function Reference.)
get_post_custom_values($key, $post_id);
This function returns a value as an array, so we will store it in $arr.
$arr = get_post_custom_values('simple-meta', $postID);
Since this particular array is only going to have one value, the keywords will be in $arr[0] (the first value). We can write the meta tag with this:
echo "";
Putting that together we get the array, then echo (print) the [0] value of the array in a meta tag:
$arr = get_post_custom_values('simple-meta', $postID); echo "";
Now, what if this particular post does not have any keywords assigned to a custom field called “simple-meta”? We’ll need to check that with a conditional statement:
if(get_post_custom_values('simple-meta', $postID)){ ...something here if the condition is true... }
If that statement is true, we will get the array and write the meta tag. Let’s put it all together in the function:
function my_very_simple_meta() { global $post; $postID = $post->ID; if(get_post_custom_values('simple-meta', $postID)) { $arr = get_post_custom_values('simple-meta', $postID); echo "<meta name=\"keywords\" content=\"".$arr[0]."\" />"; } }
Great. That is going to write a keyword meta tag if there is a custom field for the post called “simple-meta”. And we can do it outside the Loop. Now how do we get that into the <html><head> of the document?
WordPress has another fantastic action called wp_head().
add_action('wp_head', 'my_very_simple_meta');
This will fire our new function at the end of the head.
Putting it all together now in a finished file:
<?php /* Plugin Name: My Very Simple Meta Plugin URI: http://butlerblog.com/plugins/my_very_simple_meta Description: This is a very simple plugin to place custom keyword meta tags in the <head> of a post or page. Version: 0.1 Author: Chad Butler Author URI: http://butlerblog.com/ */ function my_very_simple_meta() { global $post; $postID = $post->ID; if(get_post_custom_values('simple-meta', $postID)) { $arr = get_post_custom_values('simple-meta', $postID); echo "<meta name=\"keywords\" content=\"".$arr[0]."\" />"; } } add_action('wp_head', 'my_very_simple_meta'); ?>
[View a formatted sample here.]
Exciting! “But how do I use it,” you ask? Save your file as something like my-very-simple-meta.php and load this to your plugins folder. Go to the WP plugin admin and activate it. (Note: if you copied the example verbatim, you’ll find the plugin as “My Very Simple Meta” in your list of plugins.)
Once activated, you’ll need to add keywords to a post or a page that you are going to use this for. Create a custom field called simple-meta and put your keywords in the value field. That’s it. If you view the source of your page, you should see these keywords in the head as a meta keyword tag. You are on your way to becoming a super SEO WordPress plugin guru.
Enjoyed this article?
Don't miss a single post. Subscribe to our RSS feed!