WordPress Aktionen für die Plugin Admin Seite

Wie kann ich eine benutzerdefinierte Bearbeitungsseite für meine Plugin-Admin-UI-Seite $_GET['action'] == 'edit' , wenn die angeforderte Seite ein Abfrageargument von $_GET['action'] == 'edit' ?

Meine Plugin-Eingabe-URL sieht so aus

 /admin.php?page=parser-top-level-handle 

Dann habe ich alle meine Artikel pro Zeile in einer Tabelle aufgelistet. Auf Zeile Hover erscheinen “bearbeiten | löschen” -Links und andere Aktionen. Wenn ich dann auf den edit Link klicke, bekomme ich folgende URl:

 /edit.php?page=parser-top-level-handle&action=edit&record=55 

An dieser Stelle möchte ich den Benutzer zum Bearbeitungsformular redirect.

Der Code, den ich verwenden möchte, um zur benutzerdefinierten Bearbeitungsseite weitergeleitet zu werden

  add_action( 'wp_loaded', array ( 'parserAdmin', 'init' ) ); class parserAdmin { private $db; private $add_page; public static function init() { new self; } //the consructor for parser admin function __construct(){ global $wpdb, $posts; $this->db = $wpdb; add_action('admin_menu', array($this , 'parser_add_pages') ); $this->get_targets(); //Here I inspect if action exits or not if($_GET['action']){ switch ($_GET['action']){ case 'edit': //than here should be a redirect to a custom page to edit the item passing the record query argument, do I need in this case hidden sup-page?!!! break; case 'delete': var_dump('test'); $this->_delete_target($_GET['record'] , $_GET['post_id']); break; } } } 

Solutions Collecting From Web of "WordPress Aktionen für die Plugin Admin Seite"

Sie haben möglicherweise keinen Zugriff auf $_GET . Ich denke, Sie brauchen möglicherweise global $wpdb, $posts, $_GET;

Zweitens passiert alles im Konstruktor, dh wenn das Plugin geladen wird, also jedes Mal, wenn eine Seite der Site geladen wird. Jedes Mal, wenn eine Seite $_GET['action'] wird, überprüfen Sie $_GET['action'] entweder für ‘Bearbeiten’ oder ‘Löschen’. Diese Aktionswerte sind ziemlich üblich. Sie werden sogar in WordPress Core verwendet. Sehen Sie sich die URL an, wenn Sie einen Beitrag bearbeiten. Was Sie hier tun, wird kein Ende des Konflikts verursachen.

Sie möchten dies nur auf Ihrer Plugin-Seite und nicht global für die Site verarbeiten, also ziehen Sie diesen Code aus dem Konstruktor und fügen Sie ihn in seine eigene function ein. Dann hänge diese function an einen Haken, der spezifisch für deine Plugin-Seite ist.

 function parser_handler() { global $_GET; //Here I inspect if action exits or not if($_GET['action']){ switch ($_GET['action']){ case 'edit': //than here should be a redirect to a custom page to edit the item passing the record query argument, do I need in this case hidden sup-page?!!! break; case 'delete': var_dump('test'); $this->_delete_target($_GET['record'] , $_GET['post_id']); break; } } } 

In Ihrem Konstruktor hinzufügen …

 add_action('load-parser-top-level-handle',array($this,'parser_handler')); 

Ich schätze den load- . Betrachten Sie das als Platzhalter. So finden Sie den richtigen Haken. Laden Sie Ihre Seite. Quelltext anzeigen. Suchen Sie nach dem Javascript oben auf der Seite. In diesem Skript sollte ein pagenow -Parameter sein. Nimm diesen Wert und lege ‘load-‘ davor. Dieser Hook läuft unmittelbar bevor Ihre bestimmte Plugin-Seite an den Browser gesendet wird.