web-dev-qa-db-ja.com

カスタム投稿タイプのデフォルトフォーマットを設定する方法

私は私のブログのためにカスタム投稿タイプを作成しました、内容のより容易な分離を可能にするために。この新しい投稿タイプはさまざまな投稿形式をサポートしますが、それらのほとんどはギャラリーになります。

register_post_type('atelier',
    array(
    'label' => 'L\'Atelier',
    'public' => true,
    'supports' => array('title', 'editor', 'post-formats')
    )
);

[設定] - > [書き込み]で、投稿のデフォルトの投稿形式を設定することが可能であることを確認しました。新しく作成した投稿の種類でも同じことができますか?

7
Wookai

1つのオプションは、 Dashboard -> Settings -> Writingを介してグローバルなデフォルト投稿フォーマット設定を変更する です。

この設定はglobalであるため、Post Formatsをサポートするall投稿タイプのデフォルトを設定することに注意してください。

ブログの投稿に投稿形式の必要がない場合は、removing投稿により、カスタム投稿タイプに対して投稿形式サポートonlyを有効にするだけです。ブログ投稿のフォーマットサポート:

<?php
remove_post_type_support( 'post', 'post-formats' );
?>

(テストされていませんが、動作しない理由はわかりません。)

3
Chip Bennett

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;
}
9
Michael Dozark

別のPHP構文に慣れていた初心者のためのものです。

/*
 * 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
 */
add_filter( 'option_default_post_format', 'custom_default_post_format' );
function custom_default_post_format( $format ) {
    global $post_type;

    if( $post_type == 'post_type_1' ) {
        $format = 'aside';
    }

    return $format;
}

そして:

add_filter( 'option_default_post_format', 'custom_default_post_format' );
function custom_default_post_format( $format ) {
    global $post_type;

    if( $post_type == 'post_type_1' ) {
        $format = 'aside';
    } elseif ( $post_type == 'post_type_2' ) {
        $format = 'quote';
    }

    return $format;
}

出典: switchステートメントの例 PHPマニュアル内

0
its_me