Gibt es eine Möglichkeit, die Seite vom Dashboard (alle Seiten Liste) oder die Navigationsleiste von der Plugin-function zu verstecken?

Ich versuche, eine Vorlage aus dem Plugin einzufügen, die einige meiner benutzerdefinierten Informationen anzeigen muss. Ich schrieb function, um eine Seite einzufügen und die Vorlage einzuschließen. Es funktioniert für mich, aber sobald ich die Seite erstellt habe, wird es automatisch in der Navbar-Menüliste angezeigt (momentan unter thwentythirteen theme).

Also eigentlich möchte ich meine eigene Seite nicht aus NAVBAR (Menüliste) sowie aus Dashboard alle Seiten Liste (wenn möglich) auch anzeigen. Gibt es einen Weg aus diesen Situationen herauszukommen?

Hier ist mein Code:

function create_user_content_page() { $post_id = -1; // Setup custom vars $author_id = 1; $slug = 'user-data-content'; $title = 'Data Content'; // Check if page exists, if not create it if ( null == get_page_by_title( $title )) { $dataContent_page = array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_author' => $author_id, 'post_name' => $slug, 'post_title' => $title, 'post_status' => 'private', 'post_type' => 'page' ); $post_id = wp_insert_post( $dataContent_page ); if ( !$post_id ) { wp_die( 'Error creating template page' ); } else { update_post_meta( $post_id, '_wp_page_template', 'content-template.php' ); } } // end check if } add_action( 'template_include', 'content_template' ); function content_template( $template ) { global $post; if ($post->post_type == 'user-data-content') { $template = dirname( __FILE__ ). '/content-template.php'; } return $template; } 

Solutions Collecting From Web of "Gibt es eine Möglichkeit, die Seite vom Dashboard (alle Seiten Liste) oder die Navigationsleiste von der Plugin-function zu verstecken?"

Ich verstehe nicht ganz, was du tust, aber ich habe das Gefühl, dass du das sehr überkompliziert hast. Sie müssen keine “Seite” erstellen, um eine benutzerdefinierte Vorlage zu laden. Sie können mit template_include haken und einfach eine Plugin-Datei mit viel weniger Aufwand als Sie gerade durchgehen.

Zum Beispiel (gestohlene Form einer anderen Antwort) :

 add_filter( 'template_include', 'portfolio_newpage_template', 99 ); function portfolio_newpage_template( $template ) { get_header(); include('/some/file/path/file.php'); get_footer(); die; } 

Ehrlich, ich denke, das ist alles, was Sie tun müssen.

Wenn Sie jedoch Teile der Seite bearbeiten möchten, können Sie einen Beitragstyp so registrieren, dass er nicht in den Menüs angezeigt wird, aber immer noch zugänglich ist, wenn Sie die richtige URL kennen. Diese zwei Argumente zu register_post_type werden es tun:

 'show_ui' => true, 'show_in_menu' => false, 

Sie müssen eine Art Schnittstelle für die Zuordnung der Beiträge zu Ihren Benutzern (ich denke) und für den Zugriff auf die Bearbeitungsbildschirme erstellen.

Um zu der Antwort von @s_ha_dum hinzuzufügen, besteht Ihr grundsätzliches Problem darin, dass Sie versuchen, in einem Plug-in-Präsentationscode etwas zu generieren, das den Themen überlassen werden sollte. Egal welche Methode Sie anwenden, Sie werden immer das Risiko eingehen, dass es ein Thema gibt, das sich so verhält, wie Sie es nicht erwarten, und Ihr Plugin wird eine defekte Seite ausgeben.

Wenn Sie nur einige Inhalte ausgeben möchten, sollte Ihr Plugin einen Shortcode bereitstellen. und wenn Sie wirklich die volle Kontrolle über das Design einer Seite haben müssen, dann ist vielleicht das Erstellen eines untergeordneten Themas besser als ein Plugin.