¿Cómo obtengo el ID de la página actual en edición en el admin?

14 sept 2013, 07:49:46
Vistas: 46.1K
Votos: 14

La mayoría de las soluciones que encontré son para uso en el front-end. Esto es para un plugin, por lo que toda la actividad está en el back-end.

¿Cómo obtengo el ID de la página que está siendo utilizada (editada) actualmente en el admin?

Nota Estoy fuera del loop. Solo necesito obtener el ID de la página (no de las entradas) que estoy viendo actualmente en el back-end.

2
Comentarios

Puedes obtenerlo desde la URL wp-admin/post.php?post=14&action=edit

Bindiya Patoliya Bindiya Patoliya
14 sept 2013 08:07:05

Veo la URL como último recurso. Espero que haya una forma más elegante de hacerlo.

Daniel Daniel
14 sept 2013 08:11:06
Todas las respuestas a la pregunta 4
3
27

También puedes usar

$post_id = $_GET['post'];

O puedes usar un hook (probablemente mejor).

function id_WPSE_114111() {
    global $post;
    $id = $post->ID;
    // hacer algo
}

add_action( 'admin_notices', 'id_WPSE_114111' );

Necesitarás agregar una condición ya que esto se ejecutará en todas las páginas de administración, recomiendo usar get_current_screen();

Por ejemplo, para ejecutar solo en páginas:

function id_WPSE_114111() {

    global $my_admin_page;
    $screen = get_current_screen();

    if ( is_admin() && ($screen->id == 'page') ) {
        global $post;
        $id = $post->ID;
        var_dump($id);
    }
}

add_action( 'admin_notices', 'id_WPSE_114111' );
14 sept 2013 08:19:10
Comentarios

Necesito esto para páginas.

Daniel Daniel
14 sept 2013 08:27:11

Esto también funciona para páginas.

Wyck Wyck
14 sept 2013 08:34:45

¿Para qué sirve global $my_admin_page;?

Omer Omer
8 dic 2016 19:26:06
0

Puedes agregar este código en el archivo functions.php y te mostrará un meta box encima del cuadro de ajustes de publicación cuando edites una entrada o página.

<?php

function cf_post_id() {
    global $post;

   // Obtener los datos
   $id = $post->ID;

   // Mostrar el campo
   echo '<input type="text" name="_id" value="' . $id . '" class="widefat" disabled />';
  }

 function ve_custom_meta_boxes() {
    add_meta_box('projects_refid', 'ID de la Entrada', 'cf_post_id', 'post', 'side', 'high');
    add_meta_box('projects_refid', 'ID de la Página', 'cf_post_id', 'page', 'side', 'high');
   }
   add_action('add_meta_boxes', 've_custom_meta_boxes');

?>
14 sept 2013 08:17:08
0

Esta es probablemente la forma "más segura" de verificar cuál es la publicación actual en la página de edición (y agregar) de publicaciones en el administrador de WordPress.

function wpse114111_get_current_post_id(): ?WP_Post {
    global $post;

        if (empty($post) && array_key_exists('post', $_GET)) {
            $post = get_post($_GET['post']);
        }

        // Opcional: obtener un objeto de publicación vacío desde el post_type
        if (empty($post) && array_key_exists('post_type', $_GET)) {
            $object = new stdClass();
            $object->post_type = $_GET['post_type'];
            return new WP_Post($object);
        }

        if (empty($post)) {
            return null;
        }

        return $post;
}
14 may 2020 18:11:43
0
-1

Simplemente usa este código en el archivo functions.php, te dará el ID de la página o entrada que estás editando actualmente.

function get_the_current_page_id(){
$post_id = null;
if( isset( $_REQUEST['post']) || isset($_REQUEST['post_ID'] ) ){
    $post_id = empty( $_REQUEST['post_ID'] ) ? $_REQUEST['post'] : $_REQUEST['post_ID' ];
}
    
//print_r($post_id) Para verificar
//die();
}

//get_the_current_page_id() //Llama a la función
4 abr 2022 11:00:17