1
0
Fork 0
mirror of https://github.com/yunluo/gdk.git synced 2024-05-20 23:26:40 +02:00
gdk/functions/seo.php

442 lines
16 KiB
PHP
Raw Normal View History

2020-01-25 12:25:07 +01:00
<?php
2020-02-06 11:51:43 +01:00
if (!function_exists('nc_filter_document_title_separator')):
add_filter('document_title_separator', 'nc_filter_document_title_separator', 10, 1);
add_filter('document_title_parts', 'nc_filter_document_title_parts', 10, 1);
add_action('wp_head', 'nc_seo_meta_action', 1);
function nc_filter_document_title_separator($var)
{
$nc_option = get_option('nc_option');
$option_sep = $nc_option['seo_divider'];
$var = isset($option_sep) ? $option_sep : $var;
return trim($var);
};
function nc_filter_document_title_parts($title)
{
$nc_option = get_option('nc_option');
global $paged, $page, $post;
$taxonomy_seo = $nc_option['taxonomy_seo'];
$seo_index_inner = $nc_option['seo_index_inner'];
if (is_home() || is_front_page()) {
$title_home = $seo_index_inner['seo_index_title'];
$title['title'] = (isset($title_home) && !empty($title_home)) ? $title_home : get_bloginfo('name');
} elseif (is_single() || is_page()) {
$post_title = get_post_meta($post->ID, 'seo_title', true);
$title['title'] = (isset($post_title) && !empty($post_title)) ? $post_title : get_the_title($post->ID);
} elseif ($taxonomy_seo && is_category()) {
$term = get_queried_object();
$title_category = get_term_meta($term->term_id, 'taxonomy_title', true);
$title['title'] = (isset($title_category) && !empty($title_category)) ? $title_category : get_cat_name($term->term_id);
} elseif ($taxonomy_seo && is_tag()) {
$term = get_queried_object();
$title_tag = get_term_meta($term->term_id, 'taxonomy_title', true);
$title['title'] = (isset($title_tag) && !empty($title_tag)) ? $title_tag : single_tag_title('', false);
} elseif ($taxonomy_seo && is_tax()) {
$term = get_queried_object();
$title_tag = get_term_meta($term->term_id, 'taxonomy_title', true);
$title['title'] = (isset($title_tag) && !empty($title_tag)) ? $title_tag : single_tag_title('', false);
} elseif (is_author() && ! is_post_type_archive()) {
$author = get_queried_object();
if ($author) {
$title['title'] = $author->display_name;
}
} elseif (is_search()) {
$title['title'] = "搜索结果:".get_query_var('s');
} elseif (is_404()) {
$title['title'] = __('Page not found');
}
return $title;
};
function nc_seo_meta_action()
{
$nc_option = get_option('nc_option');
$pages = get_query_var('page');
$taxonomy_seo = $nc_option['taxonomy_seo'];
$seo_index_inner = $nc_option['seo_index_inner'];
if ((is_single() || is_page()) && $pages < 2) {
global $post;
$post_keywords = get_post_meta($post->ID, 'seo_keywords', true);
$post_desc = get_post_meta($post->ID, 'seo_description', true);
if (empty($single_description_range) || is_numeric($single_description_range)) {
$post_desc_num = 140;
} else {
$post_desc_num = $single_description_range;
}
$seo_manual_des = get_post_meta($post->ID, 'seo_manual_des', true);
$seo_manual_keywords = get_post_meta($post->ID, 'seo_manual_keywords', true);
$tag = '';
$tags = get_the_tags();
if ($tags) {
foreach ($tags as $val) {
$tag.=','.$val->name;
}
}
$tag = ltrim($tag, ',');
$key_meta = isset($post_keywords) ? $post_keywords : '';
$des_meta = isset($post_desc) ? $post_desc : '';
$pt = $post->post_excerpt ? $post->post_excerpt : preg_replace('/\s+/', '', strip_tags(apply_filters('the_content', $post->post_content)));
$excerpt = mb_strimwidth($pt, 0, $post_desc_num, '', get_bloginfo('charset'));
if ((empty($key_meta) || !$seo_manual_keywords) && isset($tag)) {
$keywords = $tag;
} else {
$keywords = $key_meta;
}
if (empty($des_meta) || !$seo_manual_des) {
$description = $excerpt;
} else {
$description = $des_meta;
}
if ($keywords) {
echo '<meta name="keywords" content="'.$keywords.'" />';
echo "\n";
}
if ($description) {
echo '<meta name="description" content="'.esc_attr($description).'" />';
echo "\n";
}
}
if ((is_home() || is_front_page()) && !is_paged()) {
$keywords = $seo_index_inner['seo_index_keywords'];
$description = $seo_index_inner['seo_index_description'];
if ($keywords) {
echo '<meta name="keywords" content="'.$keywords.'" />';
echo "\n";
}
if ($description) {
echo '<meta name="description" content="'.esc_attr(stripslashes($description)).'" />';
echo "\n";
}
}
if ($taxonomy_seo && ((is_category() || is_tag() || is_tax('special')) && !is_paged())) {
$term = get_queried_object();
$keywords = get_term_meta($term->term_id, 'taxonomy_keywords', true);
$description = get_term_meta($term->term_id, 'taxonomy_desc', true);
if ($keywords) {
echo '<meta name="keywords" content="'.$keywords.'" />';
echo "\n";
}
if ($description) {
echo '<meta name="description" content="'.esc_attr(stripslashes($description)).'" />';
echo "\n";
}
}
}
endif;
2020-01-27 05:06:36 +01:00
//加载网站地图xml
if(gdk_option('gdk_sitemap_xml')){
include('sitemap-xml.php');
}
2020-01-27 15:28:34 +01:00
// 屏蔽蜘蛛爬取作者页面
if(gdk_option('gdk_no_author_page')){
function gdk_no_author_page()
{
if (is_author()) {
wp_no_robots();
}
}
add_action('wp_head', 'gdk_no_author_page');
}
2020-01-27 05:06:36 +01:00
//robots.txt优化功能
if(gdk_option('gdk_robots')){
add_filter('robots_txt', 'gdk_robots_txt', 10, 2);
function gdk_robots_txt($robotext)
{
if(gdk_option('gdk_sitemap_xml')){
$sitemap = 'Sitemap: ' . home_url('/sitemap.xml');
} else {
$sitemap = '';
}
$robotext = "User-agent: *
Disallow: /wp-admin/
Disallow: /wp-content/plugins/
Disallow: /wp-includes/
Disallow: /*/trackback
Disallow: /feed
Disallow: /*/feed
Disallow: /attachment/
Disallow: /wp-content/themes/
{$sitemap}";
return $robotext;
}
}
//文章自动内链
if(gdk_option('gdk_tag_link')){
function gdk_tag_link($content)
{
$post_tags = get_the_tags();
if ($post_tags) {
foreach ($post_tags as $tag) {
$link = get_tag_link($tag->term_id);
$keyword = $tag->name;
$cleankeyword = stripslashes($keyword);
$url = '<a target="_blank" href="'.$link.'" title="'.str_replace('%s', addcslashes($cleankeyword, '$'), '查看更多关于%s的文章').'">'.addcslashes($cleankeyword, '$').'</a>';
$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s';
$content = preg_replace($regEx, $url, $content, gdk_option('gdk_tag_num') ?? 5);
}
}
return $content;
}
add_filter('the_content', 'gdk_tag_link', 1);
}
2020-01-27 15:28:34 +01:00
// 自动添加nofloow
2020-02-02 19:46:18 +01:00
if(gdk_option('gdk_nofollow')) {
add_filter('the_content', 'gdk_nofollow');
add_filter('the_excerpt', 'gdk_nofollow');
function gdk_nofollow($content) {
return preg_replace_callback('/<a[^>]+/', 'gdk_nofollow_callback', $content);
}
function gdk_nofollow_callback($matches) {
$link = $matches[0];
$site_link = get_bloginfo('url');
if (strpos($link, 'rel') === false) {
$link = preg_replace("%(href=\S(?!$site_link))%i", 'rel="nofollow" $1', $link);
} elseif (preg_match("%href=\S(?!$site_link)%i", $link)) {
$link = preg_replace('/rel=\S(?!nofollow)\S*/i', 'rel="nofollow"', $link);
}
return $link;
}
2020-01-27 15:28:34 +01:00
}
2020-02-02 19:46:18 +01:00
//百度主动推送
if (gdk_option('gdk_baidu_push')) {
function gdk_baidu_submit($post_ID) {
2020-01-27 15:28:34 +01:00
global $post;
$bd_submit_site = get_bloginfo('url');
2020-02-02 19:46:18 +01:00
$bd_submit_token = gdk_option('gdk_baidu_token');
if (empty($post_ID) || empty($bd_submit_site) || empty($bd_submit_token)) return;
if (get_post_meta($post_ID, 'gdk_baidu_submit', true) == 1) return;
$url = get_permalink($post_ID);
$api = $api = 'http://data.zz.baidu.com/urls?site='.$bd_submit_site.'&token='.$bd_submit_token;
2020-01-27 15:28:34 +01:00
$status = $post->post_status;
if ($status != '' && $status != 'publish') {
2020-02-02 19:46:18 +01:00
$request = new WP_Http;
$result = $request->request($api, array(
'method' => 'POST',
'body' => $url,
'headers' => 'Content-Type: text/plain'
));
if ( is_array( $result ) && !is_wp_error($result) && $result['response']['code'] == '200' ) {
error_log('baidu_submit_result'.$result['body']);
$result = json_decode($result['body'], true);
}
if (array_key_exists('success', $result)) {
add_post_meta($post_ID, 'gdk_baidu_submit', 1, true);
}
2020-01-27 15:28:34 +01:00
}
2020-02-02 19:46:18 +01:00
2020-01-27 15:28:34 +01:00
}
2020-02-02 19:46:18 +01:00
add_action('publish_post', 'gdk_baidu_submit', 0);
2020-02-04 18:14:04 +01:00
add_action('wp_footer', 'gdk_baidu_auto_push', 500);
2020-02-02 19:46:18 +01:00
}
2020-02-04 18:14:04 +01:00
//百度自动推送
2020-02-02 19:46:18 +01:00
function gdk_baidu_auto_push() {
echo '<script>
2020-01-28 07:51:13 +01:00
(function(){
var bp = document.createElement(\'script\');
var curProtocol = window.location.protocol.split(\':\')[0];
if (curProtocol === \'https\') {
bp.src = \'https://zz.bdstatic.com/linksubmit/push.js\';
}
else {
bp.src = \'http://push.zhanzhang.baidu.com/push.js\';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
2020-01-27 15:28:34 +01:00
</script>';
2020-02-02 19:46:18 +01:00
}
2020-01-27 15:28:34 +01:00
if(gdk_option('gdk_seo_img')) {
//给文章图片自动添加alt和title信息
function nc_imagesalt($content) {
global $post;
$pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement = '<a$1href=$2$3.$4$5 alt="'.strip_tags($post->post_title).'" title="'.strip_tags($post->post_title).'"$6>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'nc_imagesalt');
function nc_image_alt_tag($content) {
global $post;
preg_match_all('/<img (.*?)\/>/', $content, $images);
if(!is_null($images)) {
foreach($images[1] as $index => $value) {
$new_img = str_replace('<img', '<img alt="'.strip_tags($post->post_title).'-'.get_option('blogname').'"', $images[0][$index]);
$content = str_replace($images[0][$index], $new_img, $content);
}
}
return $content;
}
add_filter('the_content', 'nc_image_alt_tag', 99999);
}
2020-01-27 05:06:36 +01:00
2020-01-25 12:25:07 +01:00
//关键字
2020-02-04 18:14:04 +01:00
function gdk_keywords() {
2020-01-25 12:25:07 +01:00
global $s, $post;
$keywords = '';
if (is_single()) {
if (get_the_tags($post->ID)) {
foreach (get_the_tags($post->ID) as $tag) $keywords.= $tag->name . ', ';
}
foreach (get_the_category($post->ID) as $category) $keywords.= $category->cat_name . ', ';
$keywords = substr_replace($keywords, '', -2);
2020-02-04 18:14:04 +01:00
} elseif (is_home()||is_front_page()) {
$keywords = gdk_option('gdk_keywords');
2020-01-25 12:25:07 +01:00
} elseif (is_tag()) {
$keywords = single_tag_title('', false);
} elseif (is_category()) {
$keywords = single_cat_title('', false);
} elseif (is_search()) {
$keywords = esc_html($s, 1);
} else {
$keywords = trim(wp_title('', false));
}
if ($keywords) {
echo "<meta name=\"keywords\" content=\"$keywords\">\n";
}
}
2020-01-25 12:32:28 +01:00
2020-02-04 18:14:04 +01:00
add_action('wp_head', 'gdk_keywords');
2020-01-25 12:32:28 +01:00
2020-01-25 12:25:07 +01:00
//网站描述
2020-02-04 18:14:04 +01:00
function gdk_description() {
2020-01-25 12:25:07 +01:00
global $s, $post;
$description = '';
$blog_name = get_bloginfo('name');
2020-02-04 18:14:04 +01:00
$excerpt = $post->post_excerpt;
2020-01-25 12:25:07 +01:00
if (is_singular()) {
2020-02-04 18:14:04 +01:00
if (!empty($excerpt)) {
$text = $excerpt;
2020-01-25 12:25:07 +01:00
} else {
$text = strip_shortcodes($post->post_content);
}
$description = trim(str_replace(array(
"\r\n",
"\r",
"\n",
" ",
" "
) , " ", str_replace("\"", "'", strip_tags($text))));
if (!($description)) $description = $blog_name . "-" . trim(wp_title('', false));
2020-02-04 18:14:04 +01:00
} elseif (is_home()||is_front_page()) {
$description = gdk_option('gdk_description'); // 首頁要自己加
2020-01-25 12:25:07 +01:00
} elseif (is_tag()) {
2020-02-04 18:14:04 +01:00
$description = $blog_name . "'" . gdk_term_meta('tag','des') . "'";
2020-01-25 12:25:07 +01:00
} elseif (is_category()) {
2020-02-04 18:14:04 +01:00
$description = trim(strip_tags(gdk_term_meta('cat','des')));
2020-01-25 12:25:07 +01:00
} elseif (is_archive()) {
$description = $blog_name . "'" . trim(wp_title('', false)) . "'";
} elseif (is_search()) {
$description = $blog_name . ": '" . esc_html($s, 1) . "' 的搜索結果";
} else {
$description = $blog_name . "'" . trim(wp_title('', false)) . "'";
}
$description = mb_substr($description, 0, 220, 'utf-8');
echo "<meta name=\"description\" content=\"$description\">\n";
}
2020-01-25 12:32:28 +01:00
2020-02-04 18:14:04 +01:00
add_action('wp_head', 'gdk_description');
2020-01-25 12:25:07 +01:00
2020-02-04 18:14:04 +01:00
//添加Open Graph Meta
function meta_og() {
global $post;
if ( is_single() ) {
if( has_post_thumbnail( $post->ID ) ) {
$img_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'thumbnail' );
}
$excerpt = strip_tags( $post->post_content );
$excerpt_more = '';
if ( strlen($excerpt ) > 155) {
$excerpt = substr( $excerpt,0,155 );
$excerpt_more = ' ...';
}
$excerpt = str_replace( '"', '', $excerpt );
$excerpt = str_replace( "'", '', $excerpt );
$excerptwords = preg_split( '/[\n\r\t ]+/', $excerpt, -1, PREG_SPLIT_NO_EMPTY );
array_pop( $excerptwords );
$excerpt = implode( ' ', $excerptwords ) . $excerpt_more;
?>
<meta name="author" content="Your Name">
<meta name="description" content="<?php echo $excerpt; ?>">
<meta property="og:title" content="<?php echo the_title(); ?>">
<meta property="og:description" content="<?php echo $excerpt; ?>">
<meta property="og:type" content="article">
<meta property="og:url" content="<?php echo the_permalink(); ?>">
<meta property="og:site_name" content="Your Site Name">
<meta property="og:image" content="<?php echo $img_src[0]; ?>">
<?php
} else {
return;
}
}
add_action('wp_head', 'meta_og', 5);
2020-01-25 12:32:28 +01:00
2020-01-25 12:25:07 +01:00
//图片img标签添加alttitle属性
function imagesalt($content){
global $post;
$pattern = "/<img(.*?)src=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement = '<img$1src=$2$3.$4$5 alt="' . $post->post_title . '" title="' . $post->post_title . '"$6>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'imagesalt');
//图片A标签添加title属性
function aimagesalt($content){
global $post;
$pattern = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement = '<a$1href=$2$3.$4$5 title="' . $post->post_title . '"$6>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'aimagesalt');
2020-01-25 12:32:28 +01:00
2020-01-25 12:25:07 +01:00
//评论分页的seo处理
2020-01-29 07:46:05 +01:00
function gdk_canonical(){
2020-01-25 12:25:07 +01:00
global $post;
if (get_query_var('paged') > 1) {
echo "\n";
echo "<link rel='canonical' href='";
echo get_permalink($post->ID);
echo "' />\n";
echo "<meta name=\"robots\" content=\"noindex,follow\">";
}
}
2020-01-29 07:46:05 +01:00
add_action('wp_head', 'gdk_canonical');