Come faccio a conoscere il tipo di post corrente quando sono su post.php nell'admin?
Sto cercando di fare qualcosa con un hook admin_init se - e solo se - l'utente sta modificando un post (post.php) con tipo di post "event". Il mio problema è che, anche se WordPress fa riferimento a una variabile globale chiamata $post_type, se faccio:
global $post_type;
var_dump($post_type);
Restituisce NULL.
ma se faccio questo:
global $pagenow;
var_dump($pagenow);
restituisce la mia pagina corrente, cioè "post.php".
Ho esaminato questa funzione $screen = get_current_screen();
ma non viene dichiarata fino a dopo che l'hook admin_init è stato eseguito, e a quel punto è troppo tardi.
Quindi la mia domanda è, come faccio, nel momento in cui viene eseguito admin_init, a scoprire quale tipo di post è il post corrente che viene modificato. Se l'URL è post.php?post=81&action=edit
allora, come faccio a sapere di che tipo di post è l'ID 81?
Grazie Malthe

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Oggetto globale che contiene la pagina admin corrente
global $pagenow;
// Se la pagina corrente è post.php e il post è impostato, allora interroga il suo post type
// se il post type è 'event' fai qualcosa
if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
// Fai qualcosa
}
}

Quando modifichi un post esistente, l'URL è '/wp-admin/post.php?post=81&action=edit'

Ora è stato risolto... anche se devi interrogare il database per farlo...

Voglio espandere la risposta di MiCc83. Ci sono alcuni aspetti che non seguono le domande originali dell'OP, ma nel complesso è un'ottima soluzione. Ad esempio, non funzionerebbe con un post_type 'event' perché nella risposta si verifica che il post_type sia 'post'.
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Oggetto globale che contiene la pagina di amministrazione corrente
global $pagenow;
// Se la pagina corrente è post.php e post è impostato, allora interroga il suo post_type
if ( 'post.php' === $pagenow && isset($_GET['post']) ){
$post_id = $_GET['post'];
// Fai qualcosa con $post_id. Ad esempio, puoi ottenere l'oggetto post completo:
$post = get_post($post_id);
}
}
La condizione 'post' === get_post_type( $_GET['post'] )
nella risposta precedente impedirebbe il funzionamento con un post type 'event'. Invece di verificare il post type 'post', bisognerebbe verificare 'event'.
