¿Cómo puedo saber el tipo de publicación actual cuando estoy en post.php en admin?

9

Estoy intentando hacer algo con un gancho admin_init si, y solo si, el usuario está editando una publicación (post.php) con el tipo de evento "evento". Mi problema es que, aunque WordPress apunta a una variable global, llama $ post_type. si lo 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".

Observé esta función $screen = get_current_screen(); , pero eso no se ha declarado hasta después de que se hayan ejecutado los ganchos admin_init, y luego es demasiado tarde.

Entonces, mi pregunta es cómo, para cuando admin_init se ejecuta, averiguo qué tipo de publicación es la publicación actual que se está editando. si la url es post.php?post=81&action=edit entonces, ¿cómo puedo saber qué tipo de publicación postid = 81 es?

Gracias Malthe

    
pregunta Malibur 04.07.2014 - 14:46

2 respuestas

16
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    // if the post type is 'event' do something
    if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
        // Do something
    }
}
    
respondido por el MiCc83 04.07.2014 - 15:15
0

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 evento post_type porque está verificando el post_type como 'publicar' en la respuesta.

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    if ( 'post.php' === $pagenow && isset($_GET['post']) ){
        $post_id = $_GET['post'];

        // Do something with $post_id. For example, you can get the full post object:
        $post = get_post($post_id);

    }
}

La condición 'post' === get_post_type( $_GET['post'] ) en la respuesta anterior evitaría que esto funcione en un tipo de publicación 'evento'. Tendría que verificar el tipo de publicación 'evento' en lugar de 'publicar'.

    
respondido por el MxmastaMills 26.03.2018 - 03:42

Lea otras preguntas en las etiquetas