如何在自定义帖子类型中管理选定的后期格式

时间:2018-04-03 05:52:56

标签: wordpress post custom-post-type

 'supports' => array('title','author','post-formats'), 

现在显示所有类型的后期格式,但我想只显示所选。

喜欢:链接,音频,视频

我想要这样的事情:

enter image description here

2 个答案:

答案 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';
}