Cum pot afla tipul de postare curent când sunt pe post.php în admin?
Încerc să fac ceva cu un hook admin_init dacă - și numai dacă - utilizatorul editează o postare (post.php) cu tipul de postare "event". Problema mea este că, deși WordPress indică o variabilă globală numită $post_type, dacă fac:
global $post_type;
var_dump($post_type);
Returnează NULL.
dar dacă fac asta:
global $pagenow;
var_dump($pagenow);
returnează pagina mea curentă, adică "post.php".
M-am uitat la această funcție $screen = get_current_screen();
dar aceasta nu este declarată până după ce hook-ul admin_init a fost executat, și atunci e prea târziu.
Așadar întrebarea mea este, cum pot afla, în momentul în care admin_init este executat, ce tip de postare este postarea curentă care este editată. Dacă URL-ul este post.php?post=81&action=edit
atunci, cum pot ști ce tip de postare este postid=81?
Mulțumesc Malthe

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Obiect global ce conține pagina curentă de administrare
global $pagenow;
// Dacă pagina curentă este post.php și post-ul este setat, atunci interoghează pentru tipul său de postare
// dacă tipul de postare este 'event' faci ceva
if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
// Fă ceva
}
}

Când editezi un articol existent, URL-ul este '/wp-admin/post.php?post=81&action=edit'

În regulă, acum este reparat... deși trebuie să interoghezi baza de date pentru a face asta...

Voi extinde răspunsul lui MiCc83. Există câteva aspecte care nu respectă întrebările originale ale OP, dar în general este o soluție excelentă. De exemplu, nu ar funcționa cu un post_type event pentru că verifici post_type ca fiind 'post' în răspuns.
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Obiect global ce conține pagina curentă de administrare
global $pagenow;
// Dacă pagina curentă este post.php și post este setat, atunci interoghează pentru tipul său de post
if ( 'post.php' === $pagenow && isset($_GET['post']) ){
$post_id = $_GET['post'];
// Fă ceva cu $post_id. De exemplu, poți obține întregul obiect post:
$post = get_post($post_id);
}
}
Condiția 'post' === get_post_type( $_GET['post'] )
din răspunsul anterior ar împiedica acest lucru să funcționeze pentru un post type 'event'. Ar trebui să verifici pentru post type 'event' în loc de 'post'.
