自動外鏈工具 在線排版工具 搜索引擎提交入口 wordpress主題推薦 批量打開網址工具 【老域名購買】 思享SEO導航 【網站合作】

HMJ-Blog主題優化:wordpress分類目錄實現自定義標題

文章目錄
  1. functions.php中添加代碼
  2. 創建header-seo.php文件
  3. header.php 中引用
  4. 設置分類目錄

wordpress主題分類目錄標題一般都比較簡單,而作為權重僅次于主頁的一個頁面,一個簡單的標題往往會造成SEO資源的浪費,為此,思享在網上找了一個可以自定義分類目錄標題的方法。同時,也彌補了HMJ-Blog主題meta關鍵詞和描述和主頁一樣的缺陷。

functions.php中添加代碼

代碼如下:

  1. //分類目錄?SEO?優化
  2. add_action('edit_category_form_fields',?'category_function');
  3. function?category_function(){
  4. if(isset($_GET['action'])?&&?$_GET['action']?==?'edit')?$value?=?get_option('cat_set_'?.?$_GET['tag_ID']);
  5. $title?=?'cat_title';
  6. $keywords?=?'cat_keywords';
  7. //$description?=?'cat_description';
  8. ?>
  9. <table?class="form-table">
  10. </table>
  11. <h2>自定義SEO信息</h2>
  12. <table?class="form-table">
  13. <tbody>
  14. <tr?class="form-field">
  15. <th?scope="row"?valign="top"><label?for="<?php?echo?$title??>">標題</label></th>
  16. <td>
  17. <input?name="<?php?echo?$title??>"?id="<?php?echo?$title??>"?type="text"?value="<?php?echo?esc_attr(stripslashes($value['title']));?>">
  18. <p?class="description">默認調用分類名稱作為Head中Title信息。</p>
  19. </td>
  20. </tr>
  21. <tr?class="form-field">
  22. <th?scope="row"?valign="top"><label?for="<?php?echo?$keywords;??>">關鍵詞</label></th>
  23. <td>
  24. <input?name="<?php?echo?$keywords;??>"?id="<?php?echo?$keywords;??>"?type="text"?value="<?php?echo?$value['keywords'];?>">
  25. <p?class="description">多個關鍵詞用小寫逗號“,”分隔開;默認調用分類名稱作為Head中KeyWords信息。</p>
  26. </td>
  27. </tr>
  28. <!--<tr?class="form-field">
  29. <th?scope="row"?valign="top"><label?for="<?php?echo?$description;??>">描述</label></th>
  30. <td>
  31. <textarea?name="<?php?echo?$description;??>"?id="<?php?echo?$description;??>"?rows="3"?cols="30">
  32. <?php?echo?stripslashes($value['description']);??>
  33. </textarea>
  34. <p?class="description">若未設置,將顯示為“關于‘某某’分類下的所有文章。”作為Head中Description信息。</p>
  35. </td>
  36. </tr>-->
  37. </tbody>
  38. </table>
  39. <?php
  40. }
  41. add_action('edit_category',?'save_category_function');
  42. function?save_category_function(){
  43. if(isset($_POST['action'])?&&?isset($_POST['taxonomy'])?&&?$_POST['action']?==?'editedtag'?&&?$_POST['taxonomy']?==?'category'){
  44. update_option(
  45. 'cat_set_'?.?$_POST['tag_ID'],
  46. array(
  47. 'title'?=>?$_POST['cat_title'],
  48. //'description'?=>?$_POST['cat_description'],
  49. 'keywords'?=>?$_POST['cat_keywords'],
  50. 'template'?=>?$_POST['cat_template'],
  51. 'orderby'?=>?$_POST['cat_orderby'],
  52. 'per_page'?=>?$_POST['cat_per_page'],
  53. )
  54. );
  55. }
  56. };

創建header-seo.php文件

文件代碼如下:

  1. <?php
  2. if?(is_home()){?//首頁SEO
  3. $title?=get_bloginfo('description')."?-?".get_bloginfo('name');
  4. $description?=?get_option('swt_description');
  5. $keywords?=?get_option('swt_keywords');
  6. }elseif?(is_category()){?//分類目錄SEO
  7. $cat_id?=?get_query_var('cat');
  8. $val?=?get_option("cat_set_$cat_id");
  9. //分類目錄長標題
  10. if(!Empty($val)?&&?$val['title']!=''){
  11. $title?=?$val['title'].'?-?'.get_bloginfo('name');
  12. }else{
  13. $title?=?single_cat_title('',?false).'?-?'.get_bloginfo('name');
  14. }
  15. //分類目錄關鍵詞
  16. if(!Empty($val)?&&?$val['keywords']!=''){
  17. $keywords?=?$val['keywords'];
  18. }else{
  19. $keywords?=?single_cat_title('',?false);
  20. }
  21. //分類目錄描述
  22. $description?=?category_description();
  23. }elseif?(is_tag()){?//標簽頁
  24. $title?=?single_cat_title('',?false).'?-?'.get_bloginfo('name');
  25. $description?=?tag_description();
  26. $keywords?=?single_tag_title('',?false);
  27. }elseif?(is_single()){?//文章頁
  28. $title?=?$post->post_title.'?-?'.get_bloginfo('name');
  29. if?($post->post_excerpt){
  30. $description?=?$post->post_excerpt;
  31. }?else?{
  32. $description?=?substr(strip_tags($post->post_content),0,400);
  33. }
  34. $keywords?=?"";
  35. $tags?=?wp_get_post_tags($post->ID);
  36. foreach?($tags?as?$tag?){
  37. $keywords?=?$keywords?.?$tag->name?.?",?";
  38. }
  39. }
  40. ?>

header.php 中引用

不過值得注意的事,因為所有的頁面都是共用一個header.php,所以添加引用代碼會出現重復的meta標簽。所以,我們需要為分類目錄創建一個單獨的header.php文件,可以復制中代碼,創建一個header-categroy.php(也利于自定義H標簽)

刪除原meta

  1. <title><?php?wp_title(?'-',?true,?'right'?);??></title>
  2. <meta?name="keywords"?content="<?php?echo?$keywords;??>"?/>
  3. <meta?name="description"?content="<?php?echo?$description;??>"?/>

以及之前的一些主頁判斷代碼,都可以刪除

添加meta引用代碼

代碼如下:

  1. <?php?include?"header-seo.php";??>
  2. <title><?php?echo?$title;??></title>
  3. <meta?name="keywords"?content="<?php?echo?$keywords??>"?/>
  4. <meta?name="description"?content="<?php?echo?strip_tags($description);??>"?/>

header引用修改

將categroy.php中

  1. <?php?get_header();??>

修改為

  1. <?php?get_header(categroy);??>

設置分類目錄

到這里基本已經完成了,到分類目錄進行相應的設置即可

分類目錄自定義


20170810更新

網上找到了另外一種方法,也挺簡單

標簽/分類目錄自定義標題

創建如下代碼的PHP文件,可以命名為title.php

  1. <?php
  2. //自定義分類標題
  3. class?zm_wp_title{
  4. ????function?__construct(){
  5. ????//?分類
  6. ????????add_action(?'category_add_form_fields',?array(?$this,?'add_tax_title_field'?)?);
  7. ????????add_action(?'category_edit_form_fields',?array(?$this,?'edit_tax_title_field'?)?);
  8. ????????add_action(?'edited_category',?array(?$this,?'save_tax_meta'?),?10,?2?);
  9. ????????add_action(?'create_category',?array(?$this,?'save_tax_meta'?),?10,?2?);
  10. ????//?標簽
  11. ????????add_action(?'post_tag_add_form_fields',?array(?$this,?'add_tax_title_field'?)?);
  12. ????????add_action(?'post_tag_edit_form_fields',?array(?$this,?'edit_tax_title_field'?)?);
  13. ????????add_action(?'edited_post_tag',?array(?$this,?'save_tax_meta'?),?10,?2?);
  14. ????????add_action(?'create_post_tag',?array(?$this,?'save_tax_meta'?),?10,?2?);
  15. ????}
  16. ????public?function?add_tax_title_field(){
  17. ?>
  18. ????????<div?class="form-field?term-title-wrap">
  19. ????????????<label?for="term_meta[tax_zm_title]">自定義標題</label>
  20. ????????????<input?type="text"?name="term_meta[tax_zm_title]"?id="term_meta[tax_zm_title]"?value=""?/>
  21. ????????????<p?class="description">搜索引擎優化自定義標題,不填寫即為默認標題</p>
  22. ????????</div>
  23. <?php
  24. ????}?//?add_tax_title_field
  25. ????public?function?edit_tax_title_field(?$term?){
  26. ????????$term_id?=?$term->term_id;
  27. ????????$term_meta?=?get_option(?"zm_taxonomy_$term_id"?);
  28. ????????$zm_title?=?$term_meta['tax_zm_title']???$term_meta['tax_zm_title']?:?'';
  29. ?>
  30. ????????<tr?class="form-field?term-title-wrap">
  31. ????????????<th?scope="row">
  32. ????????????????<label?for="term_meta[tax_zm_title]">自定義標題</label>
  33. ????????????????<td>
  34. ????????????????????<input?type="text"?name="term_meta[tax_zm_title]"?id="term_meta[tax_zm_title]"?value="<?php?echo?$zm_title;??>"?/>
  35. ????????????????????<p?class="description">搜索引擎優化自定義標題,不填寫即為默認標題</p>
  36. ????????????????</td>
  37. ????????????</th>
  38. ????????</tr>
  39. <?php
  40. ????}?//?edit_tax_title_field
  41. ????public?function?save_tax_meta(?$term_id?){
  42. ????????if?(?isset(?$_POST['term_meta']?)?)?{
  43. ????????????$t_id?=?$term_id;
  44. ????????????$term_meta?=?array();
  45. ????????????$term_meta['tax_zm_title']?=?isset?(?$_POST['term_meta']['tax_zm_title']?)???$_POST['term_meta']['tax_zm_title']?:?'';
  46. ????????????update_option(?"zm_taxonomy_$t_id",?$term_meta?);
  47. ????????}?//?if?isset(?$_POST['term_meta']?)
  48. ????}?//?save_tax_meta
  49. }?//?zm_wp_title
  50. $wptt_tax_title?=?new?zm_wp_title();
  51. function?the_zm_title()?{
  52. ????$category?=?get_the_category();
  53. ????$term_id?=?$category[0]->cat_ID;
  54. ????$term_meta?=?get_option(?"zm_taxonomy_$term_id"?);
  55. ????$tax_zm_title?=?$term_meta['tax_zm_title']???$term_meta['tax_zm_title']?:?'';
  56. ????echo?$tax_zm_title;
  57. }
  58. function?get_current_tag_id()?{
  59. ????$current_tag?=?single_tag_title('',?false);
  60. ????$tags?=?get_tags();
  61. ????foreach($tags?as?$tag)?{
  62. ????????if($tag->name?==?$current_tag)?return?$tag->term_id;
  63. ????}
  64. }
  65. function?zm_tag_title()?{
  66. ????$term_id?=?get_current_tag_id();
  67. ????$term_meta?=?get_option(?"zm_taxonomy_$term_id"?);
  68. ????$zm_tag_title?=?$term_meta['tax_zm_title']???$term_meta['tax_zm_title']?:?'';
  69. ????echo?$zm_tag_title;
  70. }
  71. ?>

把 title.php 文件引入到主題函數functions.php中

  1. //自定義標題
  2. require?get_template_directory()?.?'/title.php';

完成上面的步驟之后,基本上后臺就已經出現了分類、標簽自定義標題填寫框,接下來需要做的就是前臺的調用。

把下面的代碼放到自定義 Title 中 ,這個需要根據主題情況。

分類標題:

  1. <?php?if?(?is_category()?)?{??><title><?php?$title?=?the_zm_title();?echo?($title)???''.$title.''?:?single_cat_title();??>?-?<?php?bloginfo('name');??></title><?php?}??>

標簽標題:

  1. <?php?if?(?is_tag()?)?{??><title><?php??$title?=?zm_tag_title();?echo?($title)???''.$title.''?:?single_tag_title("",?true);??>?-?<?php?bloginfo('name');??></title><?php?}??>

非常簡單,就是判斷自定義標題有沒有輸入,如果沒有的話,即顯示原標題,如果有自定義標題,則顯示自定義標題。

來源:本文由思享SEO博客原創撰寫,歡迎分享本文,轉載請保留出處和鏈接!
seo培訓評論廣告

5條評論

  • avatar
    小米  回復

    到處都是一樣復制的,根本就沒有判斷一說,自定義輸入了后面還是會加上原來的分類名稱,這哪是真正的自定義呢,還要加個判斷字段是不是為空才好

    • avatar
      思享  回復

      @小米 是復制的 你說的對 我用著也有問題 還是那些開發完善的主題比較好

  • avatar
    求助  回復

    2種方法都有問題,第一種,后臺設置后,前臺能顯示,但是后臺輸入框是空白的
    第二種,引用PHP后,后臺正常,但是前臺網站出問題,只能讀取到title上就是空白的了

    • avatar
      思享  回復

      @求助 第一張方法后臺輸入框是空白的,但是前臺是生效的,也就是如果你不經常該標題,可以用。第二種我用倒是沒問題,只是需要在分類下有文章才生效,另外可以參考一下wordpress分類目錄添加自定義head內容 其實是一個意思
      本人也是代碼渣 所以愛莫能助

      • avatar
        求助  回復

        @思享 你用的第一還是第二中方法呀?

        • avatar
          思享  回復

          @求助 我這個主題就有自定義分類標題的功能 其他主題 主要是用第二中 第一種麻煩些 更新分類容易把標題丟掉

          • avatar
            求助  

            @思享 嘿嘿嘿,模板能分享嗎?

          • avatar
            思享  

            @求助 這個主題是付費的,授權域名才能用 而且現在我覺得這個主題圖片太多了 網頁加載起來有點慢

          • avatar
            求助  

            @思享 哦哦,好吧,那我還是就用這個免費主題吧

昵稱*

郵箱*

網址

七乐彩选号技巧