it-swarm.com.de

Wie kann ich die Verwendung einer bestimmten Vorlage für einen benutzerdefinierten Beitragstyp erzwingen?

Ich erstelle eine Newsletter-Website und jede Newsletter-Zielseite verwendet dieselbe Vorlage wie die Startseite. Gibt es sowieso zu erzwingen, dass jede Newsletter-Zielseite die Titelseitenvorlage verwendet.

Redakteure können die Vorlage beim Bearbeiten eines Newsletters nach Vorlagennamen im Feld Seitenattribute auswählen. Ich frage mich jedoch, ob es eine Möglichkeit gibt, dies zu vereinfachen.

Danke im Voraus.

1
petron

Wenn es sich bei Ihren Newslettern um einen benutzerdefinierten Beitragstyp handelt, können Sie unter Verwendung von Vorlagenhierarchie eine dafür vorgesehene Vorlage erstellen.

Vorlage für eine einzelne Seite wäre ..

single-{custom-post-type-name}.php

Vorlage für eine Archivseite wäre ..

archive-{custom-post-type-name}.php

Diese Vorlagen werden automatisch ausgewählt. Sie müssen sie nicht zu einem Seitenvorlagenattribut im Editor hinzufügen.

2
Justin

Die folgende Lösung, wenn ich Ihre Frage richtig verstanden habe, setzt die Standardvorlage auf die von Ihnen gewünschte PHP-Seitenvorlage, Sie müssen jedoch überprüfen, wie die Datei in Ihren Designdateien heißt. Sie geben im Titel den benutzerdefinierten Beitragstyp an, haben aber in Ihrer Frage eine Seite, sodass ich dies basierend auf der Seite getan und kommentiert habe, wo Sie dies in einen Beitrag/benutzerdefinierten Beitrag ändern können.

Die Lösung besteht darin, die Standardseitenvorlage zu definieren und dann die ausgewählten Vorlagenoptionen für Nicht-Administratoren zu entfernen, um sicherzustellen, dass der zweite Haken entfernt werden kann, damit Benutzer festlegen können, ob nur die Standardvorlage Ihren Wünschen entspricht.

//  This hooks into the page template and over rides the default template use this to make sure your magazine template is always default
    add_filter( 'template_include', 'default_page_template', 99 );

    function default_page_template( $template ) {
// Change page to post if not a page your working on or custom post type name
        if ( is_singular( 'page' )  ) {
            // change the default-page-template.php to your template name
            $default_template = locate_template( array( 'default-page-template.php' ) );
            if ( '' != $default_template ) {
                return $default_template ;
            }
        }

        return $template;
    }


// removes the user page select meta-box for user roles that are not admins
add_action( 'admin_menu', 'restrict_access' );
function restrict_access() {
// if the user is not admin - you can add any user roles or multiple roles
if(!current_user_can('administrator')){
    // Not tested but think this is the correct code for page template meta-box
    remove_meta_box( 'pageparentdiv', 'page','normal' );
    }
}
2
Sam