TDK功能,在很多人眼中就是SEO功能,其实只是SEO功能的一部分,只是为了让title更符合匹配文章,更有利于搜索引擎的排名,而文章标题不同于这个title,文章标题要更符合客户体验;所以就需要TDK功能,在制作BIT主题中,同样也需要增加TDK功能。下面一起来看看。
分类TDK功能
首先要给分类增加字段,分类本身自带描述功能,这个调用即可,主要加TITLE还有关键词的功能
//这里是标题字段, function add_category_field(){ echo '<div class="form-field"> <label for="cat-title">分类标题</label> <input name="cat-title" id="cat-title" type="text" value="" size="40"> <p>用于SEO自定义标题</p> </div>'; //这里是关键词的字段 echo '<div class="form-field"> <label for="cat-words">分类关键字</label> <input name="cat-words" id="cat-words" type="text" value="" size="40"> <p>用于SEO自定义关键字</p> </div>'; } add_action('category_add_form_fields','add_category_field',10,2);
接下来需要能编辑
// 分类编辑字段 function edit_category_field($tag){ echo '<tr class="form-field"> <th scope="row"><label for="cat-title">分类标题</label></th> <td> <input name="cat-title" id="cat-title" type="text" value="'; echo get_option('cat-title-'.$tag->term_id).'" size="40"/><br> <span class="cat-title">用于'.$tag->name.'分类SEO自定义标题</span> </td> </tr>'; echo '<tr class="form-field"> <th scope="row"><label for="cat-words">分类关键字</label></th> <td> <input name="cat-words" id="cat-words" type="text" value="'; echo get_option('cat-words-'.$tag->term_id).'" size="40"/><br> <span class="cat-words">用于'.$tag->name.'分类SEO自定义关键字</span> </td> </tr>'; } add_action('category_edit_form_fields','edit_category_field',10,2);
// 保存数据 function taxonomy_metadate($term_id){ if(isset($_POST['cat-title']) && isset($_POST['cat-words'])){ //判断权限--可改 if(!current_user_can('manage_categories')){ return $term_id; } // 标题 $title_key = 'cat-title-'.$term_id; // key $title_value = $_POST['cat-title']; // value // 关键字 $words_key = 'cat-words-'.$term_id; $words_value = $_POST['cat-words']; // 更新选项值 update_option( $title_key, $title_value ); update_option( $words_key, $words_value ); } } add_action('created_category','taxonomy_metadate',10,1); add_action('edited_category','taxonomy_metadate',10,1);
调用分类的title
?php if ( is_category() ) { ?>//判断分类页 <?php $term_id = get_query_var('cat'); ?><?php } ?>// <?php $term_id = get_query_var('cat'); if ( of_get_option( 'cat-title-'.$term_id )) : ?>//调用字段并且控制 <?php if ( is_category() ) { ?><title><?php echo get_option( 'cat-title-'.$term_id ); ?><?php if (get_query_var('paged')) { echo ' - 第'; echo get_query_var('paged'); echo '页';}?></title><?php } ?> <?php else: ?> <?php if ( is_category() ) { ?><title><?php single_cat_title(); ?><?php if (get_query_var('paged')) { echo ' - 第'; echo get_query_var('paged'); echo '页';}?> <?php echo of_get_option('connector'); ?> <?php bloginfo('name'); ?></title><?php } ?> 如果没有在字段输入内容,将显示后面的。
调用关键词和描述,算了不写注释了,自己测试。
<?php if ( is_category() ) { ?>//判断分类 <meta name="description" content="<?php echo category_description(); ?>" />//直接调用描述,因为分类本身存在描述,所以不需要重新写。 <?php if ( get_option( 'cat-words-'.$term_id )) : ?> <meta name="keywords" content="<?php echo get_option( 'cat-words-'.$term_id ); ?>" />//输出字段 <?php else: ?> <meta name="keywords" content="<?php single_cat_title(); ?>" />//如果没有将输出single_cat_title() <?php endif; ?> <?php } ?>
文章TDK功能
首先创建字段
$seo_post_meta_boxes = array( "custom_title" => array( "name" => "custom_title", "std" => "", "title" => "SEO自定义文章标题", "type"=>"text"), "description" => array( "name" => "description", "std" => "", "title" => "SEO文章描述,留空则自动截取首段一定字数作为文章描述", "type"=>"textarea"), "keywords" => array( "name" => "keywords", "std" => "", "title" => "SEO文章关键词,多个关键词用半角逗号隔开", "type"=>"text"), );
哪些是标题哪些是描述就不用说了吧,上面有文字
// 面板内容 function seo_post_meta_boxes() { global $post, $seo_post_meta_boxes; //获取保存 foreach ($seo_post_meta_boxes as $meta_box) { $meta_box_value = get_post_meta($post->ID, $meta_box['name'] . '', true); if ($meta_box_value != "") //将默认值替换为已保存的值 $meta_box['std'] = $meta_box_value; echo '<input type="hidden" name="' . $meta_box['name'] . '_noncename" id="' . $meta_box['name'] . '_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />'; //选择类型输出不同的html代码 switch ($meta_box['type']) { case 'title': echo '<h4>' . $meta_box['title'] . '</h4>'; break; case 'text': echo '<h4>' . $meta_box['title'] . '</h4>'; echo '<span class="form-field"><input type="text" size="40" name="' . $meta_box['name'] . '" value="' . $meta_box['std'] . '" /></span><br />'; break; case 'textarea': echo '<h4>' . $meta_box['title'] . '</h4>'; echo '<textarea id="seo-excerpt" cols="40" rows="2" name="' . $meta_box['name'] . '">' . $meta_box['std'] . '</textarea><br />'; break; } } } // 创建面板 function seo_post_meta_box() { global $theme_name; if (function_exists('add_meta_box')) { add_meta_box('seo_post_meta_box', 'SEO设置', 'seo_post_meta_boxes', 'post', 'normal', 'high'); } } // 保存数据 function save_seo_post_postdata($post_id) { global $post, $seo_post_meta_boxes; foreach ($seo_post_meta_boxes as $meta_box) { if (!wp_verify_nonce($_POST[$meta_box['name'] . '_noncename'], plugin_basename(__FILE__))) { return $post_id; } if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } else { if (!current_user_can('edit_post', $post_id)) return $post_id; } $data = $_POST[$meta_box['name'] . '']; if (get_post_meta($post_id, $meta_box['name'] . '') == "") add_post_meta($post_id, $meta_box['name'] . '', $data, true); elseif ($data != get_post_meta($post_id, $meta_box['name'] . '', true)) update_post_meta($post_id, $meta_box['name'] . '', $data); elseif ($data == "") delete_post_meta($post_id, $meta_box['name'] . '', get_post_meta($post_id, $meta_box['name'] . '', true)); } } // 触发 add_action('admin_menu', 'seo_post_meta_box'); add_action('save_post', 'save_seo_post_postdata');
调用title
<?php if ( is_single() ) { ?><title><?php if ( get_post_meta($post->ID, 'custom_title', true) ) { ?><?php echo trim(get_post_meta($post->ID, 'custom_title', true)); ?><?php if (get_query_var('page')) { echo ' - 第'; echo get_query_var('page'); echo '页';}?><?php } else { ?><?php echo trim(the_title('')); ?><?php if (get_query_var('page')) { echo ' - 第'; echo get_query_var('page'); echo '页';}?> <?php echo of_get_option('connector'); ?> <?php bloginfo('name'); ?><?php } ?></title><?php } ?>
调用关键词和描述
<?php if ( is_single() ) { ?> <?php if ( get_post_meta($post->ID, 'description', true) ) : ?> <meta name="description" content="<?php $description = get_post_meta($post->ID, 'description', true);{echo $description;}?>" /> <?php else: ?> <meta name="description" content="<?php echo trim($description); ?>" /> <?php endif; ?> <?php if ( get_post_meta($post->ID, 'keywords', true) ) : ?> <meta name="keywords" content="<?php $keywords = get_post_meta($post->ID, 'keywords', true);{echo $keywords;}?>" /> <?php else: ?> <meta name="keywords" content="<?php echo trim($keywords,','); ?>" /> <?php endif; ?> <?php } ?>
页面TDK功能
创建字段
// 页面相关自定义栏目 $new_meta_page_boxes = array( "custom_title" => array( "name" => "custom_title", "std" => "", "title" => "SEO自定义页面标题", "type"=>"text"), "description" => array( "name" => "description", "std" => "", "title" => "文章描述,留空则自动截取首段一定字数作为文章描述", "type"=>"textarea"), "keywords" => array( "name" => "keywords", "std" => "", "title" => "文章关键词,多个关键词用半角逗号隔开", "type"=>"text"), ); // 面板内容 function new_meta_page_boxes() { global $post, $new_meta_page_boxes; //获取保存 foreach ($new_meta_page_boxes as $meta_box) { $meta_box_value = get_post_meta($post->ID, $meta_box['name'] . '', true); if ($meta_box_value != "") //将默认值替换为已保存的值 $meta_box['std'] = $meta_box_value; echo '<input type="hidden" name="' . $meta_box['name'] . '_noncename" id="' . $meta_box['name'] . '_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />'; //选择类型输出不同的html代码 switch ($meta_box['type']) { case 'title': echo '<h4>' . $meta_box['title'] . '</h4>'; break; case 'text': echo '<h4>' . $meta_box['title'] . '</h4>'; echo '<span class="form-field"><input type="text" size="40" name="' . $meta_box['name'] . '" value="' . $meta_box['std'] . '" /></span><br />'; break; case 'textarea': echo '<h4>' . $meta_box['title'] . '</h4>'; echo '<textarea id="seo-excerpt" cols="40" rows="2" name="' . $meta_box['name'] . '">' . $meta_box['std'] . '</textarea><br />'; break; } } } function create_meta_page_box() { global $theme_name; if (function_exists('add_meta_box')) { add_meta_box('new-meta-boxes', '页面SEO设置', 'new_meta_page_boxes', 'page', 'normal', 'high'); } } function save_page_postdata($post_id) { global $post, $new_meta_page_boxes; foreach ($new_meta_page_boxes as $meta_box) { if (!wp_verify_nonce($_POST[$meta_box['name'] . '_noncename'], plugin_basename(__FILE__))) { return $post_id; } if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } else { if (!current_user_can('edit_post', $post_id)) return $post_id; } $data = $_POST[$meta_box['name'] . '']; if (get_post_meta($post_id, $meta_box['name'] . '') == "") add_post_meta($post_id, $meta_box['name'] . '', $data, true); elseif ($data != get_post_meta($post_id, $meta_box['name'] . '', true)) update_post_meta($post_id, $meta_box['name'] . '', $data); elseif ($data == "") delete_post_meta($post_id, $meta_box['name'] . '', get_post_meta($post_id, $meta_box['name'] . '', true)); } } add_action('admin_menu', 'create_meta_page_box'); add_action('save_post', 'save_page_postdata');
调用title
<?php if ( is_page() && !is_front_page() ) { ?><title><?php if ( get_post_meta($post->ID, 'custom_title', true) ) { ?><?php echo trim(get_post_meta($post->ID, 'custom_title', true)); ?><?php } else { ?><?php echo trim(the_title('',0)); ?><?php } ?><?php echo of_get_option('connector'); ?> <?php bloginfo('name'); ?></title><?php } ?>
调用关键词和描述
<?php if ( is_page() ) { ?> <meta name="description" content="<?php $description = get_post_meta($post->ID, 'description', true);{echo $description;}?>" /> <meta name="keywords" content="<?php $keywords = get_post_meta($post->ID, 'keywords', true);{echo $keywords;}?>" /> <?php } ?>
TAGTDK功能
wp的标签需要单独加分类标题,说白了就是多了一个分类归档 // 标签添加字段 function add_tags_field(){ echo '<div class="form-field"> <label for="tag-title">分类标题</label> <input name="tag-title" id="tag-title" type="text" value="" size="40"> <p>用于SEO自定义标题</p> </div>'; echo '<div class="form-field"> <label for="tag-words">分类关键字</label> <input name="tag-words" id="tag-words" type="text" value="" size="40"> <p>用于SEO自定义关键字</p> </div>'; } add_action('post_tag_add_form_fields','add_tags_field',10,2); // 标签编辑字段 function edit_tags_field($tag){ echo '<tr class="form-field"> <th scope="row"><label for="tag-title">分类标题</label></th> <td> <input name="tag-title" id="tag-title" type="text" value="'; echo get_option('tag-title-'.$tag->term_id).'" size="40"/><br> <span class="cat-title">用于'.$tag->name.'分类SEO自定义标题</span> </td> </tr>'; echo '<tr class="form-field"> <th scope="row"><label for="tag-words">分类关键字</label></th> <td> <input name="tag-words" id="tag-words" type="text" value="'; echo get_option('tag-words-'.$tag->term_id).'" size="40"/><br> <span class="tag-words">用于'.$tag->name.'分类SEO自定义关键字</span> </td> </tr>'; } add_action('post_tag_edit_form_fields','edit_tags_field',10,2);
// 保存数据 function taxonomy_metadate1($term_id){ if(isset($_POST['tag-title']) && isset($_POST['tag-words'])){ //判断权限--可改 if(!current_user_can('manage_categories')){ return $term_id; } // 标题 $title_key = 'tag-title-'.$term_id; // key $title_value = $_POST['tag-title']; // value // 关键字 $words_key = 'tag-words-'.$term_id; $words_value = $_POST['tag-words']; // 更新选项值 update_option( $title_key, $title_value ); update_option( $words_key, $words_value ); } } add_action('created_post_tag','taxonomy_metadate1',10,1); add_action('edited_post_tag','taxonomy_metadate1',10,1);
调用TAG标题
<?php if ( is_tag() ) { ?><?php $term_id = get_query_var('tag_id'); ?><?php } ?> <?php if ( of_get_option( 'tag-words-'.$term_id )) : ?> <?php if ( is_tag() ) { ?><title><?php echo get_option( 'tag-title-'.$term_id ); ?><?php if (get_query_var('paged')) { echo ' - 第'; echo get_query_var('paged'); echo '页';}?> <?php echo of_get_option('connector'); ?> <?php bloginfo('name'); ?></title><?php } ?> <?php else: ?> <?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><title><?php single_tag_title("", true); ?><?php if (get_query_var('paged')) { echo ' - 第'; echo get_query_var('paged'); echo '页';}?> <?php echo of_get_option('connector'); ?> <?php bloginfo('name'); ?></title><?php } ?><?php } ?> <?php endif; ?>
调用TAG关键词和描述
<?php if ( is_tag() ) { ?> <meta name="description" content="<?php echo trim(strip_tags(tag_description())); ?>" /> <?php if ( get_option( 'tag-words-'.$term_id )) : ?> <meta name="keywords" content="<?php echo get_option( 'tag-words-'.$term_id ); ?>" /> <?php else: ?> <meta name="keywords" content="<?php echo single_tag_title(); ?>" /> <?php endif; ?> <?php } ?>
首页TDK功能
一点优化首页的TDK是后端控制的,单独做了一个控制面板,一般默认的在常规里面设置,然后调用,
<?php //首页 if ( is_home() ) { ?> <title><?php bloginfo('name'); ?> <?php echo of_get_option('connector'); ?> <?php bloginfo('description'); ?><?php if (get_query_var('paged')) { echo ' - 第'; echo get_query_var('paged'); echo '页';}?></title> <?php } ?>
控制板块就不写了,这里的关键词和描述就不公开了,拿到我主题的,可以自己看