答案 0 :(得分:0)
add_theme_support( 'post-formats', array( 'link', 'audio', 'video' ) );
默认情况下,它会添加所有已注册的格式,但是像这样,您可以选择要添加的格式
您可以在codex中了解不同的格式以及如何添加这些格式:Codex
编辑:
如果您正在使用子主题,并且从不想使用其他格式,可以这样称呼:
add_action( 'after_setup_theme', 'childtheme_formats', 11 );
function childtheme_formats(){
add_theme_support( 'post-formats', array( 'aside', 'gallery', 'link' ) );
}
编辑:
根据评论,您只想在单个帖子类型上使用此内容:
然后你可以这样做:
<?php add_post_type_support( $post_type, $supports ) ?>
$support
可以是字符串或数组:所以在你的任务中:
所以你可能会做这样的事情:
function test_add_formats_support_for_cpt() {
add_post_type_support( 'yourCustomPostType', 'post-formats', array('link', 'audio', 'video') );
}
add_action( 'init', 'test_add_formats_support_for_cpt' );
这是未经测试的,所以我不确定它是否有效 - 让我知道
答案 1 :(得分:0)
您可以通过覆盖默认的帖子格式来限制或管理自定义帖子类型格式。
创建一个函数,该函数将返回我们的帖子类型支持的帖子格式数组,如音频,图库,图像和视频。
function customposttype_allowed_formats() {
return array( 'audio', 'gallery', 'image', 'video' );
}
我们将使用“主题支持”系统并更改主题支持的格式,并将限制我们的帖子类型仪表板屏幕,以便它不会混淆其他帖子类型
add_action( 'load-post.php', 'support_customposttype_filter' );
add_action( 'load-post-new.php', 'support_customposttype_filter' );
add_action( 'load-edit.php', 'support_customposttype_filter' );
function support_customposttype_filter() {
$screen = get_current_screen();
// Return if not customposttype screen.
if ( empty( $screen->post_type ) || $screen->post_type !== 'custom_post_type' )
return;
// Check theme supports formats.
if ( current_theme_supports( 'post-formats' ) ) {
$formats = get_theme_support( 'post-formats' );
// If we have formats, add theme support for only the allowed formats.
if ( isset( $formats[0] ) ) {
$new_formats = array_intersect( $formats[0], customposttype_allowed_formats() );
// Remove post formats support.
remove_theme_support( 'post-formats' );
// If the theme supports the allowed formats, add support for them.
if ( $new_formats )
add_theme_support( 'post-formats', $new_formats );
}
}
// Filter the default post format.
add_filter( 'option_default_post_format', 'customposttype_format_filter', 95 );
}
最后有默认帖子格式的过滤器,如果它不是批准的格式(音频,图库,图片和视频),我们可以覆盖默认的帖子格式。
function customposttype_format_filter( $format ) {
return in_array( $format, customposttype_allowed_formats() ) ? $format : 'standard';
}