it-swarm.com.de

Vorlage für einen bestimmten Beitrag des benutzerdefinierten Beitragstyps

Ich habe das CPT "Event". Ich habe single-event.php erstellt.

Ich möchte, dass für ein bestimmtes Ereignis eine andere Vorlage als für ein einzelnes Ereignis verwendet wird.

Ich habe an anderer Stelle gelesen, dass dies durch Erstellen einer Single-Event- [Slug] .php geschehen könnte, aber ich habe es versucht und es funktioniert nicht. WP verwendet single-event.php. (Ich kann das nicht in der WordPress-Dokumentation finden, also denke ich, ich habe es falsch verstanden?)

Gibt es eine Möglichkeit, dies zu tun?

5
spiral

Informationen zu den von WordPress verwendeten Vorlagen finden Sie immer unter Vorlagenhierarchie-Schema im Codex.

Wie Sie dort sehen können, existiert single-{$posttype}-{$slug}.php nicht, es gibt nur single-{$posttype}.php.

Schauen Sie sich den Filter 'single_template' an, um zu tun, was Sie wollen:

add_filter( 'single_template', function( $template ) {
    global $post;
    if ( $post->post_type === 'event' ) {
        $locate_template = locate_template( "single-event-{$post->post_name}.php" );
        if ( ! empty( $locate_template ) ) {
            $template = $locate_template;
        }
    }
    return $template;
} );

Nachdem Sie dies in Ihren functions.php eingegeben haben, können Sie die Datei single-event-{$slug}.php erstellen und sie wird von WordPress geladen.

9
gmazzap

Verwenden Sie diesen Code in Ihrer Funktionsdatei für ein untergeordnetes Thema und ändern Sie die 8 in die Post-ID, für die Sie die benutzerdefinierte einzelne CPT-Vorlage verwenden möchten.

function get_custom_post_type_template($single_template) {
     global $post;

     if ( is_single('8') ) {
          $single_template = get_stylesheet_directory() . '/custom-cpt-template.php';
     }
     return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
1
Brad Dalton