iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 29
1
Modern Web

讓0基礎的你也能製作簡單wordpress主題系列 第 29

【Day 29】Custom post type,讓你海量的文章也能分類起來

當你製作了海量文章,你應該會發現一個問題,就是這些文章很難簡單地找出來,極為不方便於你,進行打理。你或許會希望像平時電腦的檔案那樣,能夠為你每一項項目,開啟一個檔案,這樣麻煩的問題,就消失不見了。但你看完整個wordpress的版面,卻還是找不到任何解決方案。不過其實wordpress是有提供的,只是它需要我們花費上一點功夫,才能把它弄出來,沒錯它就是我們這篇的主題Custom post type了。

Custom post type 的基本製作

正如你所看到,在wordpress裏,這是沒法子設定的。所以這次,我們需要直接到後台,加入編碼。我們到function的檔案裡,加入這功能。像之前那樣,我們先在裡面,加入一個新的funciton,並且在function裏,把它登記好並在下方,在之前加入css檔案那樣,啟動它,編碼參考:

function post_type() 
{     
register_post_type('drawing',$args); 
}
add_action ('init','post_type');

-名稱不一定要post_type的

-drawing為這posttype的名稱,$arg則是他的稱號(variable變數),方便你之後利用array,修改post type樣式

-init,為wordpress的一個設定,這功能讓你的設定可以先於主題的header下載下來。

接下來我們可以開始調整post type的設定,以下為一些常用設定的介紹:

-hierachical => 來設定這分類,是給post還是page的(true:page ,false:post)

-public => 是否公開的 (true:允許,false:不允許)

-has_archive => 和 hierachical分別不大,主要要來設定是否允許post的(true:允許,false:不允許)

-supports => 要來設定,這裡允許用家來修改什麼的,最常用的有:comments, title, editor, thumbnail

-menu_icon => 修改在欄位會出現的圖標,可以在wordpress dashicons裏找到,找到合適時只需要複製名稱就可以

-labels => 用作修改custom post type 在欄位會顯示出來的名稱,原設會為post/page,常用設定:
-name 欄位顯示的名字
-singular_name 在增新文章時,它會顯示增新【你加入的名字】,例如輸入drawing的,就會是增新 drawing這樣

    注意name和singular_name需要放到array裏的
    

編碼用法參考:

 $args = array(
    'labels'=> array(
     'name'  => 'drawing',
     'singular_name' => 'drawing' , 

    ),
    'hierachical'=> true,
    'public' => true,
    'has_archive' =>true,
    'menu_icon' => 'dashicons-welcome-write-blog',
    'supports' => array('title','editor','thumbnail'),

  );

加入獨立的分類/tag

跟上方的類近,我們同樣需要透過加入一個新function,來設定一個新分類,不過這回有部份地方是不同的:

  • register_taxonomy => 這裡比較特別的是,我們除了加入名稱和變數外,我們亦要加入array,內裡放的則是,你 希望這分類會在那個post_type裏出現

  • hierachical => 這次在這裡影響到的,不再是post/page,而是category/tag(true:category,false: tag)

  • labels和public在這裡都是有的,功能也是一樣

編碼用法參考:

function post_type_taxonomy()
{
  $args = array(
     
     'labels'=> array(
     'name'  => 'time',
     'singular_name' => 'time' , 

    ),
    'hierachical'=> false,
    'public' => true,
  );
  register_taxonomy('time',array('drawing'),$args);
}
add_action('init','post_type_taxonomy');

為您的post_type加入獨立頁面版面

設定完成後,隨意增新新的文章,然後點擊標題下方的連結,你會看到,出來的畫面會沿用之前對於post版面的設定,然後也許會出現一些錯誤,這是源於我們在這裡並沒有任何tag,卻要他顯示tag,這部分我們一會在創建新版面時一併一拼解決。假若你們頁面也沒法顯示,可以到設定--永久連結裏,限制為文章名稱,然後在底部選擇儲存設定。

我們先來學怎樣加入新的版面吧,我們先創建一個新文件,設為single-(register了的post-type名稱).php,例如我這裡就會是:single-drawing.php。

完成後,點擊連結後就會進入一個空白頁面,這就代表成功了,之後的部分就像之前那樣製作就可以了。

錯誤解決

在之前我們是使用foreach,讓它每一個tag都能夠正常顯示,但當時並沒有加入,if讓他只有當有tag時,這個loop才會運作,所以我們加入if($tags):

<?php $posttags= get_the_tags();if($tags): foreach($posttags as $tag):?>

接著我們在底部加入end if:

<?php endforeach;endif;?>

這樣就完成了。


上一篇
【Day28 】 Wordpress custom field ?是什麼來的?該怎麼用?也許您需要這篇文章的幫助
下一篇
【Day 30 】 Custom field 進階篇,讓你學會與custom post type 一併使用
系列文
讓0基礎的你也能製作簡單wordpress主題30

尚未有邦友留言

立即登入留言