Genesis SEO Tip — Automatically Generate Meta Description And Keywords If None Exists

Meta description and meta keywords play an important role in the SEO of your webpage. These meta tags indicate to the search engines what the webpage is about.

More importantly, search engines use the meta description to display the content summary on the search results page. So even if we forget about its importance in the SEO, meta description has one more important role to play — it helps in improving the click through rate of the webpage.

The meta description serves as an advertisement for the actual content and gives you an opportunity to convince the user to click on the link for the relevant information related to the search query.

This means the meta description for the posts and the pages can greatly help in gaining the clicks through SERPs. However, there is a SEO glitch with Genesis. It doesn’t automatically generate the meta description and meta keywords like Thesis. When you switch over to Genesis theme, it will output the meta description and meta keywords only if these meta tags are explicitly set up using “genesis_description” and “genesis_keywords” custom fields respectively or by using “All in one SEO Pack” plugin.

You can add the following code snippet to your Genesis child theme’s functions.php for automatically generating the meta description and the meta keywords.

This code snippet generates the meta description from the post content. If the excerpt is set, then it gives a preference to the post excerpt for generating the meta description.

For the keywords, the following code snippet sets the post tags as the meta-keywords. If the post-tags are not present, it will automatically generate the keywords from the post / page title. While generating the keywords from the title, it removes the common words like ‘a’, ‘the’, ‘with’, etc to generate the meaningful keywords.

Here’s the code snippet:


/*
Automatically generates a post/page meta description
for SEO in Genesis framework.
If Genesis doesn't return a description then one is
automatically generated from the excerpt
else from the post/page	content.
*/

add_action( 'genesis_meta', 'my_auto_description' , 11 );

function my_auto_description(){	
	if(
		!is_singular() || 
		genesis_get_custom_field( '_genesis_description' ) ||
		genesis_get_custom_field( '_aioseop_description' ) ||
		genesis_get_custom_field( '_headspace_description' ) ||
		genesis_get_custom_field( 'thesis_description' ) ||
		genesis_get_custom_field( 'description' )
	) return;
	global $post;
	setup_postdata($post); #wp
	add_filter('excerpt_more', '__return_false');	//remove the more text
	add_filter('excerpt_length', 'my_auto_description_length'); #wp	//limit the no of character in the generated description to a custom value
	$excerpt = trim(str_replace('[...]', '', wp_trim_excerpt(get_the_excerpt()))); #wp	//remove [...] from excerpt	
	remove_filter('excerpt_more', '__return_false');	//remove the filter we hooked to earlier
	$description = '<meta name="description" content="' . $excerpt . '" />';
	echo   $description  ;
}

/*
Limits the auto generated description to a certain length.
If not required you can just do `return $length;`
*/

function my_auto_description_length($length) {
	return 150;
}

/*
Automatically generates a post/page meta keywords
for SEO in Genesis framework.
If Genesis doesn't return a keywords then the keywords are
automatically generated from the post-tags or  
else from the post/page	title.
*/

add_action( 'genesis_meta', 'my_auto_keywords' , 11 );

function my_auto_keywords(){
	if(
	!is_singular() ||
	genesis_get_custom_field( '_genesis_keywords' ) ||
	genesis_get_custom_field( '_aioseop_keywords' ) ||
	genesis_get_custom_field( 'thesis_keywords' ) ||
	genesis_get_custom_field( 'keywords' )
	) return;

	$tags = get_the_tags(); #wp

	if ($tags) {
	foreach ($tags as $tag) {
		$keywords[] = $tag->name;
		}
	}

	if ($keywords) {
		$keywords = '';	 
	}
	else {
		$title = get_the_title();
		$keywords = preg_split("/s/", $title);
		$keywords = array_diff($keywords, my_excluded_words());	//remove useless words
		$keywords = '';
	}

	echo $keywords;
}

function my_excluded_words(){
	return array ("a", "able", "about", "above", "abroad", "according", "accordingly", "across", "actually", "adj", "after", "afterwards", "again", "against", "ago", "ahead", "ain't", "all", "allow", "allows", "almost", "alone", "along", "alongside", "already", "also", "although", "always", "am", "amid", "amidst", "among", "amongst", "an", "and", "another", "any", "anybody", "anyhow", "anyone", "anything", "anyway", "anyways", "anywhere", "apart", "appear", "appreciate", "appropriate", "are", "aren't", "around", "as", "a's", "aside", "ask", "asking", "associated", "at", "available", "away", "awfully", "b", "back", "backward", "backwards", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "begin", "behind", "being", "believe", "below", "beside", "besides", "best", "better", "between", "beyond", "both", "brief", "but", "by", "c", "came", "can", "cannot", "cant", "can't", "caption", "cause", "causes", "certain", "certainly", "changes", "clearly", "c'mon", "co", "co.", "com", "come", "comes", "concerning", "consequently", "consider", "considering", "contain", "containing", "contains", "corresponding", "could", "couldn't", "course", "c's", "currently", "d", "dare", "daren't", "definitely", "described", "despite", "did", "didn't", "different", "directly", "do", "does", "doesn't", "doing", "done", "don't", "down", "downwards", "during", "e", "each", "edu", "eg", "eight", "eighty", "either", "else", "elsewhere", "end", "ending", "enough", "entirely", "especially", "et", "etc", "even", "ever", "evermore", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "fairly", "far", "farther", "few", "fewer", "fifth", "first", "five", "followed", "following", "follows", "for", "forever", "former", "formerly", "forth", "forward", "found", "four", "from", "further", "furthermore", "g", "get", "gets", "getting", "given", "gives", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "half", "happens", "hardly", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "hello", "help", "hence", "her", "here", "hereafter", "hereby", "herein", "here's", "hereupon", "hers", "herself", "he's", "hi", "him", "himself", "his", "hither", "hopefully", "how", "howbeit", "however", "hundred", "i", "i'd", "ie", "if", "ignored", "i'll", "i'm", "immediate", "in", "inasmuch", "inc", "inc.", "indeed", "indicate", "indicated", "indicates", "inner", "inside", "insofar", "instead", "into", "inward", "is", "isn't", "it", "it'd", "it'll", "its", "it's", "itself", "i've", "j", "just", "k", "keep", "keeps", "kept", "know", "known", "knows", "l", "last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "let's", "like", "liked", "likely", "likewise", "little", "look", "looking", "looks", "low", "lower", "ltd", "m", "made", "mainly", "make", "makes", "many", "may", "maybe", "mayn't", "me", "mean", "meantime", "meanwhile", "merely", "might", "mightn't", "mine", "minus", "miss", "more", "moreover", "most", "mostly", "mr", "mrs", "much", "must", "mustn't", "my", "myself", "n", "name", "namely", "nd", "near", "nearly", "necessary", "need", "needn't", "needs", "neither", "never", "neverf", "neverless", "nevertheless", "new", "next", "nine", "ninety", "no", "nobody", "non", "none", "nonetheless", "noone", "no-one", "nor", "normally", "not", "nothing", "notwithstanding", "novel", "now", "nowhere", "o", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "on", "once", "one", "ones", "one's", "only", "onto", "opposite", "or", "other", "others", "otherwise", "ought", "oughtn't", "our", "ours", "ourselves", "out", "outside", "over", "overall", "own", "p", "particular", "particularly", "past", "per", "perhaps", "placed", "please", "plus", "possible", "presumably", "probably", "provided", "provides", "q", "que", "quite", "qv", "r", "rather", "rd", "re", "really", "reasonably", "recent", "recently", "regarding", "regardless", "regards", "relatively", "respectively", "right", "round", "s", "said", "same", "saw", "say", "saying", "says", "second", "secondly", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves", "sensible", "sent", "serious", "seriously", "seven", "several", "shall", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "since", "six", "so", "some", "somebody", "someday", "somehow", "someone", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specified", "specify", "specifying", "still", "sub", "such", "sup", "sure", "t", "take", "taken", "taking", "tell", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that'll", "thats", "that's", "that've", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "thereafter", "thereby", "there'd", "therefore", "therein", "there'll", "there're", "theres", "there's", "thereupon", "there've", "these", "they", "they'd", "they'll", "they're", "they've", "thing", "things", "think", "third", "thirty", "this", "thorough", "thoroughly", "those", "though", "three", "through", "throughout", "thru", "thus", "till", "to", "together", "too", "took", "toward", "towards", "tried", "tries", "truly", "try", "trying", "t's", "twice", "two", "u", "un", "under", "underneath", "undoing", "unfortunately", "unless", "unlike", "unlikely", "until", "unto", "up", "upon", "upwards", "us", "use", "used", "useful", "uses", "using", "usually", "v", "value", "various", "versus", "very", "via", "viz", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "we'd", "welcome", "well", "we'll", "went", "were", "we're", "weren't", "we've", "what", "whatever", "what'll", "what's", "what've", "when", "whence", "whenever", "where", "whereafter", "whereas", "whereby", "wherein", "where's", "whereupon", "wherever", "whether", "which", "whichever", "while", "whilst", "whither", "who", "who'd", "whoever", "whole", "who'll", "whom", "whomever", "who's", "whose", "why", "will", "willing", "wish", "with", "within", "without", "wonder", "won't", "would", "wouldn't", "x", "y", "yes", "yet", "you", "you'd", "you'll", "your", "you're", "yours", "yourself", "yourselves", "you've", "z", "zero");
}

Posted In:

UX & Frontend Design, Code Snippets, Genesis WordPress Theme Framework Child-Theme

1 Comment

  1. Shivanand,

    Nice article. But I’m having trouble getting my page title, description and keywords to show up on my site that uses All in One SEO Pack (latest version) and the Genesis framework and the Modern Portfolio theme. It seems there’s no correct settings in AIOSEO that lets Genesis show the title/description/keywords I enter into AIOSEO. Any ideas?

    Reply

Comment on Genesis SEO Tip — Automatically Generate Meta Description And Keywords If None Exists

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