Created
July 8, 2014 02:01
-
-
Save davidvandenbor/622472d7a022d49adbad to your computer and use it in GitHub Desktop.
WordPress: Basic SEO
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /* Basic WP SEO | |
| Usage: | |
| 1. add this code to functions.php | |
| 2. replace the $default_keywords with your own | |
| 3. add <?php echo basic_wp_seo(); ?> to header.php | |
| 4. test well and fine tune as needed | |
| Optional: add custom description, keywords, and/or title | |
| to any post or page using these custom field keys: | |
| mm_seo_desc | |
| mm_seo_keywords | |
| mm_seo_title | |
| To migrate from any SEO plugin, replace its custom field | |
| keys with those listed above. More information: | |
| @ http://digwp.com/2013/08/basic-wp-seo/ | |
| */ | |
| function basic_wp_seo() { | |
| global $page, $paged, $post; | |
| $default_keywords = 'wordpress, plugins, themes, design, dev, development, security, htaccess, apache, php, sql, html, css, jquery, javascript, tutorials'; // customize | |
| $output = ''; | |
| // description | |
| $seo_desc = get_post_meta($post->ID, 'mm_seo_desc', true); | |
| $description = get_bloginfo('description', 'display'); | |
| $pagedata = get_post($post->ID); | |
| if (is_singular()) { | |
| if (!empty($seo_desc)) { | |
| $content = $seo_desc; | |
| } else if (!empty($pagedata)) { | |
| $content = apply_filters('the_excerpt_rss', $pagedata->post_content); | |
| $content = substr(trim(strip_tags($content)), 0, 155); | |
| $content = preg_replace('#\n#', ' ', $content); | |
| $content = preg_replace('#\s{2,}#', ' ', $content); | |
| $content = trim($content); | |
| } | |
| } else { | |
| $content = $description; | |
| } | |
| $output .= '<meta name="description" content="' . esc_attr($content) . '">' . "\n"; | |
| // keywords | |
| $keys = get_post_meta($post->ID, 'mm_seo_keywords', true); | |
| $cats = get_the_category(); | |
| $tags = get_the_tags(); | |
| if (empty($keys)) { | |
| if (!empty($cats)) foreach($cats as $cat) $keys .= $cat->name . ', '; | |
| if (!empty($tags)) foreach($tags as $tag) $keys .= $tag->name . ', '; | |
| $keys .= $default_keywords; | |
| } | |
| $output .= "\t\t" . '<meta name="keywords" content="' . esc_attr($keys) . '">' . "\n"; | |
| // robots | |
| if (is_category() || is_tag()) { | |
| $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; | |
| if ($paged > 1) { | |
| $output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n"; | |
| } else { | |
| $output .= "\t\t" . '<meta name="robots" content="index,follow">' . "\n"; | |
| } | |
| } else if (is_home() || is_singular()) { | |
| $output .= "\t\t" . '<meta name="robots" content="index,follow">' . "\n"; | |
| } else { | |
| $output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n"; | |
| } | |
| // title | |
| $title_custom = get_post_meta($post->ID, 'mm_seo_title', true); | |
| $url = ltrim(esc_url($_SERVER['REQUEST_URI']), '/'); | |
| $name = get_bloginfo('name', 'display'); | |
| $title = trim(wp_title('', false)); | |
| $cat = single_cat_title('', false); | |
| $tag = single_tag_title('', false); | |
| $search = get_search_query(); | |
| if (!empty($title_custom)) $title = $title_custom; | |
| if ($paged >= 2 || $page >= 2) $page_number = ' | ' . sprintf('Page %s', max($paged, $page)); | |
| else $page_number = ''; | |
| if (is_home() || is_front_page()) $seo_title = $name . ' | ' . $description; | |
| elseif (is_singular()) $seo_title = $title . ' | ' . $name; | |
| elseif (is_tag()) $seo_title = 'Tag Archive: ' . $tag . ' | ' . $name; | |
| elseif (is_category()) $seo_title = 'Category Archive: ' . $cat . ' | ' . $name; | |
| elseif (is_archive()) $seo_title = 'Archive: ' . $title . ' | ' . $name; | |
| elseif (is_search()) $seo_title = 'Search: ' . $search . ' | ' . $name; | |
| elseif (is_404()) $seo_title = '404 - Not Found: ' . $url . ' | ' . $name; | |
| else $seo_title = $name . ' | ' . $description; | |
| $output .= "\t\t" . '<title>' . esc_attr($seo_title . $page_number) . '</title>' . "\n"; | |
| return $output; | |
| } | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment