Die beste Möglichkeit, um eine Seite außerhalb der Seitenliste zu erstellen

Um jetzt eine einzelne Seite hinzuzufügen, die nicht Teil des CMS sein sollte, füge ich einen neuen Seiteneintrag in das WP-Admin-Panel ein und markiere dann die Seite in page- {page-slug} .php. Dies führt jedoch dazu, dass die Seitenliste Seiten enthält, die nicht vom Client / Editor bearbeitet werden sollen (Titel, Inhalt sind irrelevant).

Wie sollte ich diese benutzerdefinierten PHP-Seiten erstellen, ohne das Pages-System zu verwenden?

  • Der Slug sollte immer noch funktionieren und nicht durch neue Seiten überschrieben werden können
  • Eine PHP-Datei sollte dynamisch wie page- {slug} .php oder /inc/{slug}.php verlinkt werden

Solutions Collecting From Web of "Die beste Möglichkeit, um eine Seite außerhalb der Seitenliste zu erstellen"

Eine so interessante Frage, ich werde gerne die anderen Antworten sehen.

Ich bin mir sicher, dass es eine elegantere Lösung ist, aber ich würde mich einfach in die Admin-CSS-Datei einklinken und diese Seiten so von der Benutzeransicht ausblenden.

// Hook into the admin head add_action('admin_head', 'hidepages_css'); // Add our custom CSS to the admin pages function hidepages_css() { ?>  < ?php } ?> 

Sie können es auch so einstellen, dass nur Sie die Seiten als Admin sehen können, aber Ihre Benutzer mit niedrigeren Rollen können nicht.

 // Check if the user is an admin if ( ! current_user_can( 'manage_options' ) ) { // Hook into the admin head add_action('admin_head', 'hidepages_css'); // Add our custom CSS to the admin pages function hidepages_css() { ?>  < ?php } ?> } 

Die gleichen Seiten wie oben “5 und 9” können auch im Backend mit PHP versteckt / entfernt werden:

 function hidepages_php( $query ) { if( !is_admin() ) return $query; global $pagenow; if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'page' == get_query_var('post_type') ) ) $query->set( 'post__not_in', array(5,9) ); //ids of posts you dont want visible in backend return $query; } add_action( 'pre_get_posts' ,'hidepages_php' ); 

ODER auch nur für bestimmte Benutzer. Hier ist ein Beispiel, das alle außer IHNEN oder einem bestimmten Benutzer versteckt:

 function hidepages_php( $query ) { if( !is_admin() ) return $query; global $current_user; get_currentuserinfo(); if($current_user->user_login != 'yourusername') { global $pagenow; if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'page' == get_query_var('post_type') ) ) $query->set( 'post__not_in', array(5,9) ); //ids of posts you dont want visible in backend return $query; } } add_action( 'pre_get_posts' ,'hidepages_php' );