Come ottenere l'ID della pagina corrente in modifica nell'admin?
La maggior parte delle soluzioni che ho trovato sono per l'uso nel front-end. Questo è per un plugin, quindi tutte le attività sono nel back-end.
Come posso ottenere l'ID della pagina che è attualmente in uso (in modifica) nell'admin?
Nota Sono fuori dal loop. Ho solo bisogno di ottenere l'ID della pagina (non dei post) che sto attualmente visualizzando nel back-end.
Puoi anche usare
$post_id = $_GET['post'];
Oppure puoi usare un hook (probabilmente meglio).
function id_WPSE_114111() {
global $post;
$id = $post->ID;
// fai qualcosa
}
add_action( 'admin_notices', 'id_WPSE_114111' );
Dovrai aggiungere una condizione poiché questo verrà eseguito su tutte le pagine di amministrazione, ti consiglio di usare get_current_screen();
Ad esempio per eseguire solo sulle pagine:
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' );

Puoi aggiungere questo codice nel file functions.php e ti mostrerà un meta box sopra il riquadro delle impostazioni di pubblicazione quando modifichi un articolo o una pagina.
<?php
function cf_post_id() {
global $post;
// Ottiene i dati
$id = $post->ID;
// Mostra il campo
echo '<input type="text" name="_id" value="' . $id . '" class="widefat" disabled />';
}
function ve_custom_meta_boxes() {
add_meta_box('projects_refid', 'ID Articolo', 'cf_post_id', 'post', 'side', 'high');
add_meta_box('projects_refid', 'ID Pagina', 'cf_post_id', 'page', 'side', 'high');
}
add_action('add_meta_boxes', 've_custom_meta_boxes');
?>

Questo è probabilmente il modo "più sicuro" per verificare qual è il post corrente nella pagina di modifica (e aggiunta) dei post nell'area di amministrazione di WordPress.
function wpse114111_get_current_post_id(): ?WP_Post {
global $post;
if (empty($post) && array_key_exists('post', $_GET)) {
$post = get_post($_GET['post']);
}
// Opzionale: ottieni un oggetto post vuoto dal 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;
}

Puoi utilizzare questo codice nel file functions.php, ti restituirà l'ID della pagina o del post corrente che stai modificando
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) Per verificare
//die();
}
//get_the_current_page_id() //Chiama la funzione
