當你製作了海量文章,你應該會發現一個問題,就是這些文章很難簡單地找出來,極為不方便於你,進行打理。你或許會希望像平時電腦的檔案那樣,能夠為你每一項項目,開啟一個檔案,這樣麻煩的問題,就消失不見了。但你看完整個wordpress的版面,卻還是找不到任何解決方案。不過其實wordpress是有提供的,只是它需要我們花費上一點功夫,才能把它弄出來,沒錯它就是我們這篇的主題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'),
);
跟上方的類近,我們同樣需要透過加入一個新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版面的設定,然後也許會出現一些錯誤,這是源於我們在這裡並沒有任何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;?>
這樣就完成了。