¿Cómo obtengo el ID de la página actual en edición en el admin?
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.
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' );

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');
?>

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;
}

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
