getPost()) { throw new RuntimeException('Unable to create preview post.'); } $post['post_content'] = $content; $post['post_status'] = 'draft'; if (1 >= wp_update_post($post)) { throw new RuntimeException('Unable to update post content.'); } return $post['ID']; } /** * Returns an array of the post fields. * @return array */ protected function getPostFields() { return array( 'post_status' => 'draft', 'post_title' => 'Gallery Preview', ); } /** * Creates a new post for the preview. * @return WP_Post|null */ protected function createPost() { if (1 >= $postId = wp_insert_post($this->getPostFields())) { return null; } update_option(self::POST_FIELD, $postId); return get_post($postId, self::POST_OUTPUT, self::POST_FILTER); } /** * Returns an instance of the preview post. * @return WP_Post|null */ protected function getPost() { $postId = get_option(self::POST_FIELD); if (false === $postId) { return $this->createPost(); } $post = get_post((int)$postId, self::POST_OUTPUT, self::POST_FILTER); $postFields = $this->getPostFields(); if (null === $post) { return $this->createPost(); } elseif ($post['post_title'] !== $postFields['post_title']) { return $this->createPost(); } return $post; } }