Действие 'admin_init' запускается перед любой другой ловушкой, когда пользователь получает доступ к области администратора. Он срабатывает до того, как новое сообщение получит идентификатор.
Чтобы получить новый идентификатор сообщения, вы можете использовать «save_post», действие, которое запускается при создании или обновлении сообщения или страницы (http://codex.wordpress.org/Plugin_API/Action_Reference/save_post).
Сначала вы можете включить свои скрипты, используя 'admin_enqueue_scripts', а затем использовать 'save_post', чтобы получить новый идентификатор поста. «Admin_print_scripts» запускается после «save_post», и вы можете использовать wp_localize_script (https://codex.wordpress.org/Function_Reference/wp_localize_script), или другой метод для передачи нового идентификатора поста в ваш javascript.
Мне нужно что-то подобное, но оно использовалось в классе.
class Foo {
// this will hold the id of the new post
private $postId = null;
public function __construct()
{
// the actions are triggered in this order
add_action('admin_enqueue_scripts', array($this, 'EnqueueScripts'));
add_action('save_post', array($this, 'SavePost'));
add_action('admin_print_scripts', array($this, 'LocalizeScripts'));
}
// enqueue your scripts and set the last parameter($in_footer) to true
public function EnqueueScripts()
{
wp_enqueue_script('myJs', 'js/my.js', array('jquery'), false, true);
}
// use wp_localize_script to pass to your script the post id
public function LocalizeScripts()
{
wp_localize_script('myJs', 'myJsObject', array('postId'=>$this->GetPostId()));
}
// if $post_id is different from global post id you are in the write/create post page, else you are saving an existing post
public function SavePost($post_id)
{
if($post_id != $this->GetPostId())
{
$this->SetPostId($post_id);
}
}
private function GetPostId()
{
if (!$this->postId) {
global $post;
if($post)
{
$this->SetPostId($post->ID);
}
}
return $this->postId;
}
private function SetPostId($postId)
{
$this->postId = $postId;
}
}
Теперь в вашем javascript вы можете использовать:
myJsObject.postId