Skip to content

Instantly share code, notes, and snippets.

@wpsmithtwc
Created October 6, 2016 16:07
Show Gist options
  • Save wpsmithtwc/a90f4e04780fbcb6b5bd0479e1ebc1c9 to your computer and use it in GitHub Desktop.
Save wpsmithtwc/a90f4e04780fbcb6b5bd0479e1ebc1c9 to your computer and use it in GitHub Desktop.
<?php
/*
Plugin Name: Custom META Tags
Description: Add custom META tags on a per-page/post basis using custom fields.
Author: Keith Solomon
Version: 1.0
Author URI: http://solowebdesigns.net/
*/
/*
Custom head META tags
This plugin will build cutom META (descripton and keyword) tags for your site. You can set defaults for both using the settings below.
It will also use the custom fields defined below to fill in this data. If you choose not to use custom fields, it will build per-post/page
tags using post tags for keywords and either the post/page content or excerpt for the description.
*/
function head_meta() {
// Change the settings below to suit your needs.
$default_blog_desc = ''; // Default blog description
$default_blog_kw = ''; // Default blog keywords
$post_desc_length = 20; // description length in # words for post/Page
$post_use_excerpt = 0; // 0 (zero) to force content as description for post/Page
$custom_desc_key = 'description'; // custom field key; if used, overrides excerpt/content
$custom_kw_key = 'keywords'; // custom field key; if used, overrides post tags
// Stop editing here.
global $cat, $cache_categories, $wp_query, $wp_version;
if (is_single() || is_page()) {
$post = $wp_query->post;
$post_custom = get_post_custom($post->ID);
$custom_desc_value = $post_custom["$custom_desc_key"][0];
$custom_kw_value = $post_custom["$custom_kw_key"][0];
if ($custom_kw_value) {
$keywords = $custom_kw_value;
} else {
$posttags = get_the_tags();
if ($posttags) {
foreach ($posttags as $tag) {
$keywords .= $tag->name.',';
}
}
}
if ($custom_desc_value) {
$text = $custom_desc_value;
} elseif ($post_use_excerpt) {
$text = $post->post_excerpt;
} else {
$text = $post->post_content;
}
$text = str_replace(array("\r\n", "\r", "\n", " "), " ", $text);
$text = str_replace(array("\""), "", $text);
$text = trim(strip_tags($text));
$text = explode(' ', $text);
if (count($text) > $post_desc_length) {
$l = $post_desc_length;
$ellipsis = '...';
} else {
$l = count($text);
$ellipsis = '';
}
$description = '';
for ($i=0; $i<$l; $i++)
$description .= $text[$i] . ' ';
$description .= $ellipsis;
} elseif (is_category()) {
$category = $wp_query->get_queried_object();
$description = trim(strip_tags($category->category_description));
} else {
$description = (empty($default_blog_desc)) ? trim(strip_tags(get_bloginfo('description'))) : $default_blog_desc;
$keywords = $default_blog_kw;
}
echo "<!-- Meta tags built by Custom META Tags -->\n";
if ($keywords) {
echo "<meta name=\"keywords\" content=\"$keywords\" />\n";
}
if ($description) {
echo "<meta name=\"description\" content=\"$description\" />\n";
}
}
add_action('wp_head', 'head_meta');
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment