Wie lege ich ein Standardformat für einen benutzerdefinierten Beitragstyp fest?

7

Ich habe einen benutzerdefinierten Beitragstyp für mein Blog erstellt, um die Trennung von Inhalten zu erleichtern. Dieser neue Beitragstyp unterstützt verschiedene Beitragsformate, die meisten davon sind jedoch Galerien.

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

Ich habe gesehen, dass es unter Einstellungen -> Schreiben möglich ist, das Standard-Beitragsformat für Beiträge festzulegen. Ist es möglich, dasselbe für meinen neu erstellten Beitragstyp zu tun?

Wookai
quelle
Wahrscheinlich am besten auf diese Frage / Antwort verweisen. wordpress.stackexchange.com/questions/32480/… Erstellen Sie grundsätzlich eine benutzerdefinierte Post-Typ-Vorlage und formatieren Sie sie einfach so.
Chetan

Antworten:

3

Eine Möglichkeit wäre, die globale EinstellungDashboard -> Settings -> Writing für das Standard-Post-Format über zu ändern .

Beachten Sie, dass diese Einstellung global ist , sodass der Standard für alle Beitragstypen festgelegt wird, die Beitragsformate unterstützen.

Wenn Sie keine Postformate für Blogposts benötigen, können Sie die Postformatunterstützung einfach nur für Ihren benutzerdefinierten Posttyp aktivieren , indem Sie die Postformatunterstützung für Blogposts entfernen :

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

(Ungetestet, aber ich sehe keinen Grund, warum es nicht funktionieren sollte.)

Chip Bennett
quelle
9

Sie können dies mit dem option_default_post_formatFilter handhaben :

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 );
}

Wenn Sie den Filter für mehrere benutzerdefinierte Beitragstypen einrichten möchten, würde ich die Funktion so bearbeiten, dass eine switch-Anweisung verwendet wird, wie folgt:

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;
}
Michael Dozark
quelle
2
Diese Antwort adressiert tatsächlich die ursprüngliche Frage!
somatische
0

Für Anfänger, die an eine andere PHP-Syntax gewöhnt sind: Die Codeblöcke in @ MichaelDozarks ausgezeichneter Antwort können auch wie folgt geschrieben werden:

/*
 * 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;
}

Und:

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;
}

Quelle: Beispiele für die switchAnweisung im PHP-Handbuch.

da ich bin
quelle