This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| programmieren:wordpress:admin_pages_hinzufuegen [2019/11/28 20:44] – created jgehrke | programmieren:wordpress:admin_pages_hinzufuegen [2022/12/17 12:28] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Wordpress Admin Pages Hinzufügen ====== | + | ====== Wordpress Admin Settings |
| - | Mit diesem Code Beispiel werden zwei Options / Settings Pages für Wordpress hinzugefügt. Dieser Code fügt nur die Seiten ins Menü ein. Es müssen noch Render Funktionen geschrieben werden, die eine Ausgabe erzeugen. | + | Mit diesem Code Beispiel werden zwei Options / Settings Pages für Wordpress hinzugefügt. Dieser Code fügt nur die Seiten ins Menü ein. Es müssen noch Render Funktionen geschrieben werden, die eine Ausgabe erzeugen. |
| + | |||
| + | ===== 1. Settings-Page Registrieren (ohne Klasse) ===== | ||
| <code php> | <code php> | ||
| <?php | <?php | ||
| - | namespace PluginNamespace\UserAccessManager; | + | namespace PluginNamespace\Adminpages; |
| + | |||
| + | add_action( ' | ||
| function add_admin_page() { | function add_admin_page() { | ||
| Line 28: | Line 32: | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | Damit Unterseiten bei bestehenden Setting-Seiten eingebaut werden, muss der parent-slug angepasst werden. | ||
| + | |||
| + | <code php> | ||
| + | $parent_slug | ||
| + | |||
| + | // ... | ||
| + | |||
| + | add_submenu_page( $parent_slug, | ||
| + | </ | ||
| + | |||
| + | Mehr dazu in der [[https:// | ||
| + | |||
| + | |||
| + | ===== 2. Settings-Page als PHP-Klasse ===== | ||
| + | |||
| + | Es kann nützlich sein Settings als PHP Class oder Objekt zu registrieren, | ||
| + | |||
| + | <code php> | ||
| + | <?php | ||
| + | |||
| + | namespace mein_namespace; | ||
| + | |||
| + | /** | ||
| + | * | ||
| + | */ | ||
| + | class Overview | ||
| + | { | ||
| + | |||
| + | private $plugin_url = ''; | ||
| + | |||
| + | function __construct( $plugin_url ) | ||
| + | { | ||
| + | $this-> | ||
| + | add_action( ' | ||
| + | add_action( ' | ||
| + | } | ||
| + | |||
| + | public function add_page() | ||
| + | { | ||
| + | $page_title | ||
| + | $menu_title | ||
| + | $capability | ||
| + | $menu_slug | ||
| + | $page_function = [ $this, ' | ||
| + | $icon | ||
| + | $position | ||
| + | add_menu_page( $page_title, | ||
| + | } | ||
| + | |||
| + | public function register_scripts_styles(){ | ||
| + | // Style Registrieren (noch nicht einbetten) | ||
| + | /* | ||
| + | $handle | ||
| + | $src | ||
| + | $deps | ||
| + | $version = ' | ||
| + | wp_register_style( $handle, $src, $deps, $version ); | ||
| + | */ | ||
| + | |||
| + | // Script Registrieren (noch nicht einbetten) | ||
| + | /* | ||
| + | $handle | ||
| + | $src | ||
| + | $deps | ||
| + | $version | ||
| + | $in_footer = false; | ||
| + | wp_register_script( $handle, $src, $deps, $version, | ||
| + | */ | ||
| + | } | ||
| + | |||
| + | public function render_page() | ||
| + | { | ||
| + | // | ||
| + | // | ||
| + | |||
| + | echo "< | ||
| + | include " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== 3. HTML Ausgabe und Speichern (rudimentär) ===== | ||
| + | |||
| + | Page Renderer Function, so etwas wie: | ||
| + | <code php> | ||
| + | function admin_setting_page_theme_links(){ | ||
| + | $menu_slug | ||
| + | $echo | ||
| + | $form_action = menu_page_url( $menu_slug, $echo ); | ||
| + | |||
| + | $v = [ | ||
| + | ' | ||
| + | ]; | ||
| + | |||
| + | require_once ' | ||
| + | } | ||
| + | |||
| + | /* Rudimentäre Saving & Lade Function */ | ||
| + | function save_and_load_option( $key, $default = null ){ | ||
| + | $value = get_option( $key, $default ); | ||
| + | |||
| + | if( isset( $_POST[$key] ) ){ | ||
| + | $new_value = $_POST[$key]; | ||
| + | $autoload | ||
| + | update_option( $key, $new_value, $autoload ); | ||
| + | $value | ||
| + | } | ||
| + | |||
| + | return $new_value; | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | HTML-Sub-File für das Template der Settings-Page, | ||
| + | <code php> | ||
| + | <div class=" | ||
| + | < | ||
| + | <form method=" | ||
| + | |||
| + | <table class=" | ||
| + | < | ||
| + | < | ||
| + | <th scope=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | <p class=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| - | add_action( ' | + | <?php submit_button(); ?> |
| + | </ | ||
| + | </ | ||
| </ | </ | ||