問題描述

我為我的部落格建立了一個自定義帖子型別,以便更容易地分離內容。這個新的帖子型別支援不同的後期格式,但大多數都是畫廊。

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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。