¿Cómo puedo saber el tipo de entrada actual cuando estoy en post.php en el admin?
Estoy tratando de hacer algo con un hook admin_init si - y solo si - el usuario está editando una entrada (post.php) con el tipo de entrada "event". Mi problema es que, aunque WordPress apunta a una variable global llamada $post_type, si hago:
global $post_type;
var_dump($post_type);
Devuelve NULL.
pero si hago esto:
global $pagenow;
var_dump($pagenow);
devuelve mi página actual, es decir, "post.php".
Investigué esta función $screen = get_current_screen();
pero esa no está declarada hasta después de que se ejecute el hook admin_init, y entonces es demasiado tarde.
Entonces mi pregunta es, ¿cómo puedo, al momento en que se ejecuta admin_init, averiguar qué tipo de entrada está siendo editada? Si la URL es post.php?post=81&action=edit
entonces, ¿cómo puedo saber de qué tipo de entrada es el postid=81?
Gracias Malthe

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Objeto global que contiene la página de administración actual
global $pagenow;
// Si la página actual es post.php y el post está definido, entonces consulta su tipo de publicación
// si el tipo de publicación es 'event', haz algo
if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
// Haz algo
}
}

Al editar una publicación existente, la URL es '/wp-admin/post.php?post=81&action=edit'

Corregido ahora... aunque hay que consultar la base de datos para hacerlo...

Voy a ampliar la respuesta de MiCc83. Hay algunas cosas que no siguen las preguntas originales del OP, pero en general es una gran solución. Por ejemplo, no funcionaría con un post_type 'event' porque estás verificando el post_type como 'post' en la respuesta.
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
// Objeto global que contiene la página de administración actual
global $pagenow;
// Si la página actual es post.php y post está definido, entonces consulta su tipo de publicación
if ( 'post.php' === $pagenow && isset($_GET['post']) ){
$post_id = $_GET['post'];
// Haz algo con $post_id. Por ejemplo, puedes obtener el objeto completo del post:
$post = get_post($post_id);
}
}
La condición 'post' === get_post_type( $_GET['post'] )
en la respuesta anterior evitaría que esto funcione con un tipo de publicación 'event'. Necesitarías verificar el tipo de publicación 'event' en lugar de 'post'.
