问题描述
我为我的博客创建了一个自定义帖子类型,以便更容易地分离内容。这个新的帖子类型支持不同的后期格式,但大多数都是画廊。
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。