Admin: global $ post leer

Ich habe versucht, $ post var außerhalb der function PHP in WordPress Admin Panel zu bekommen. Die einzige Möglichkeit, auf $ post zuzugreifen, ist add_action.

Allerdings möchte ich diese Variable außerhalb der add_action erhalten und global var scheint in add_action nicht zu funktionieren.

Wie kann ich $ post im Admin-Panel außerhalb von function.php bekommen?

Ich suche während Stunden und kann keine Lösung finden …

EDIT: Beispiel

require_once(TP_PLUGIN_PATH . 'includes/my-file-framework.php' ); // it'a a metabox framework require_once(TP_PLUGIN_PATH . 'includes/my-file-config.php' ); // I load the file that include metabox array to build metabox class The_plugin_Admin { public function __construct() { add_action( 'pre_get_posts', array($this, 'the_metabox' )); } public function the_metabox() { apply_filters( 'the_metabox_setup',''); } } new The_plugin_Admin; 

Und meine-Datei-config.php, wo ich WordPress global abrufen möchte:

  add_filter( 'the_metabox_setup', 'the_metabox_setup_callback' ); function the_metabox_setup_callback() { global $post; print_r($post); //empty $post_ID = isset($_GET['post']) ? $_GET['post'] : 0; echo $post_ID; // empty on new post because not already set $post_types = get_post_types(array('public' => true), 'names', 'and'); // no get all post type on the first time, need to loop again to get all $an_array[] = array(......); $an_array[] = array(......); $an_array[] = array(......); $an_array[] = array(......); foreach ($an_array as $array) { new The_Metabox($array); // contruct my metabox, the class was declared previous in my-file-framework.php } } 

Solutions Collecting From Web of "Admin: global $ post leer"

Der grundlegende Fehler ist, dass alle Daten an dem Punkt verfügbar sind, an dem Sie Ihren Code schreiben. Dies ist nicht der Fall, und es gibt Hooks, die während verschiedener Zustände des coreladeprozedurgraphen Zugriff auf den corecode bereitstellen.

Kurz und sehr vereinfacht läuft das so ab:

 # core loads // ...more stuff... # point at where all must-use-plugins are loaded - first entry point do_action( 'muplugins_loaded' ); // ...more stuff... # point at where all plugins are loaded - second entry point do_action( 'plugins_loaded' ); // ...more stuff... # main core stuff available - use this hook instead of `init` for multisite plugins do_action( 'wp_loaded' ); // ...more stuff... # themes functions.php files loaded - use this hook for theme stuff do_action( 'after_setup_theme' ); // ...rendering happens... 

Irgendwo dazwischen erstellt der WP-Core verschiedene global verfügbare Datensätze in globalen Variablen (füllt sie mit Daten). Einige werden während des Rendering-Flusses definiert, andere davor. Mit anderen Worten: Wenn Sie ein Plug-in schreiben und den Code einfach in die Ursprungszeile einfügen (nicht in einem an einen Hook oder Filter angehängten Callback), ist es sehr ungewiss erscheinen. In Ihrem Beispiel wird möglicherweise vor plugins_loaded aufgerufen. Das Ergebnis ist entweder ein PHP-Fehler (nicht definierte Variable) oder nur etwas leer, weil die Variable nicht gefüllt wurde.

Fazit: Immer! Setzen Sie Ihren Code in Callbacks, die an (die entsprechenden) Hooks und Filter angehängt sind. In den meisten Fällen bedeutet dies ein bisschen Schrotflinten- Debugging und das Anhängen Ihrer Callbacks an verschiedene Hooks / Filter, die Sie finden, wenn Sie dem Core-Ladevorgang mit dem Lesen von Core-Dateien folgen.

Abkürzung zu den im Admin verfügbaren Daten und an welchen Haken es über das wecodemore / “Current Admin Info” -Plugin erreichbar ist .