Cum obțin ID-ul paginii curente în editare din admin?
Majoritatea soluțiilor pe care le-am găsit sunt pentru front-end. Aceasta este pentru un plugin, deci toată activitatea este în back-end.
Cum pot obține ID-ul paginii care este în prezent utilizată (editată) în admin?
Notă Sunt în afara buclei. Am nevoie doar să obțin ID-ul paginii (nu al articolelor) pe care o văd în prezent în back-end.

Poți folosi și
$post_id = $_GET['post'];
Sau poți folosi un hook (probabil mai bine).
function id_WPSE_114111() {
global $post;
$id = $post->ID;
// fă ceva
}
add_action( 'admin_notices', 'id_WPSE_114111' );
Va trebui să adaugi o condiție întrucât acest cod va rula pe toate paginile de administrare, recomand să folosești get_current_screen();
De exemplu, pentru a rula doar pe pagini:
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' );

Puteți adăuga acest cod în fișierul functions.php și vă va oferi o cutie meta deasupra casetei de setări de publicare atunci când editați un articol sau o pagină.
<?php
function cf_post_id() {
global $post;
// Obține datele
$id = $post->ID;
// Afișează câmpul
echo '<input type="text" name="_id" value="' . $id . '" class="widefat" disabled />';
}
function ve_custom_meta_boxes() {
add_meta_box('projects_refid', 'ID Articol', 'cf_post_id', 'post', 'side', 'high');
add_meta_box('projects_refid', 'ID Pagină', 'cf_post_id', 'page', 'side', 'high');
}
add_action('add_meta_boxes', 've_custom_meta_boxes');
?>

Aceasta este probabil cea mai "sigură" metodă de a verifica care este postarea curentă în pagina de editare (și adăugare) a postărilor din administrarea WordPress.
function wpse114111_get_current_post_id(): ?WP_Post {
global $post;
if (empty($post) && array_key_exists('post', $_GET)) {
$post = get_post($_GET['post']);
}
// Opțional: obține un obiect post gol din 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;
}

Poți folosi acest cod în fișierul functions.php, îți va returna ID-ul paginii sau articolului curent în editare
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) Pentru verificare
//die();
}
//get_the_current_page_id() //Apelează funcția
