問題描述
我為我的博客創建了一個自定義帖子類型,以便更容易地分離內容。這個新的帖子類型支持不同的後期格式,但大多數都是畫廊。
register_post_type('atelier',
array(
'label' => 'L'Atelier',
'public' => true,
'supports' => array('title', 'editor', 'post-formats')
)
);
我看到有可能在設置 – > 寫入設置帖子的默認帖子格式,是否可以為我新創建的帖子類型做同樣的事情?
最佳解決方案
一個選項是通過 Dashboard -> Settings -> Writing
修改全局默認 Post 格式設置。
請注意,此設置是全局的,因此它將為支持 Post 格式的所有帖子類型設置默認值。
如果您不需要發佈博客帖子的格式,您可以通過刪除 post-format 支持博客帖子來簡單地啓用僅適用於您的自定義帖子類型的 post-format 支持:
<?php
remove_post_type_support( 'post', 'post-formats' );
?>
(未經測試,但我看不出為什麼不能工作的原因。)
次佳解決方案
您可以使用 option_default_post_format
過濾器處理此問題:
add_filter( 'option_default_post_format', 'slimline_default_post_format' );
/**
* Posts of post_type_1 will be asides by default, but all other post types
* will be the default set on the Settings > Writing admin panel
*/
function slimline_default_post_format( $format ) {
global $post_type;
return ( 'post_type_1' === $post_type ? 'aside' : $format );
}
如果要為多個自定義帖子類型設置過濾器,我將編輯該功能以使用 switch 語句,如下所示:
function slimline_default_post_format( $format ) {
global $post_type;
switch( $post_type ) {
case 'post_type_1' :
$format = 'aside';
break;
case 'post_type_2' :
$format = 'quote';
break;
}
return $format;
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。