TOSAVE === $status ) {
// If the post is a draft - save the `autosave` to the original draft.
// Allow a revision only if the original post is already published.
if ( in_array( $document->get_post()->post_status, [ Document::STATUS_PUBLISH, Document::STATUS_PRIVATE ], true ) ) {
$document = $document->get_autosave( 0, true );
}
}
// Set default page template because the footer-saver doesn't send default values,
// But if the template was changed from canvas to default - it needed to save.
if ( Utils::is_cpt_custom_templates_supported() && ! isset( $request['settings']['template'] ) ) {
$request['settings']['template'] = 'default';
}
$data = [
'elements' => $request['elements'],
'settings' => $request['settings'],
];
$document->save( $data );
// Refresh after save.
$document = $this->get( $document->get_post()->ID, false );
$return_data = [
'status' => $document->get_post()->post_status,
'config' => [
'document' => [
'last_edited' => $document->get_last_edited(),
'urls' => [
'wp_preview' => $document->get_wp_preview_url(),
],
],
],
];
/**
* Returned documents ajax saved data.
*
* Filters the ajax data returned when saving the post on the builder.
*
* @since 2.0.0
*
* @param array $return_data The returned data.
* @param Document $document The document instance.
*/
$return_data = apply_filters( 'elementor/documents/ajax_save/return_data', $return_data, $document );
return $return_data;
}
/**
* Ajax discard changes.
*
* Load the document data from an autosave, deleting unsaved changes.
*
* @since 2.0.0
* @access public
*
* @param $request
*
* @return bool True if changes discarded, False otherwise.
*/
public function ajax_discard_changes( $request ) {
$document = $this->get( $request['editor_post_id'] );
$autosave = $document->get_autosave();
if ( $autosave ) {
$success = $autosave->delete();
} else {
$success = true;
}
return $success;
}
public function ajax_get_document_config( $request ) {
$post_id = absint( $request['id'] );
Plugin::$instance->editor->set_post_id( $post_id );
$document = $this->get_doc_or_auto_save( $post_id );
if ( ! $document ) {
throw new \Exception( 'Not Found.' );
}
if ( ! $document->is_editable_by_current_user() ) {
throw new \Exception( 'Access denied.' );
}
// Set the global data like $post, $authordata and etc
Plugin::$instance->db->switch_to_post( $post_id );
$this->switch_to_document( $document );
// Change mode to Builder
$document->set_is_built_with_elementor( true );
$doc_config = $document->get_config();
return $doc_config;
}
/**
* Switch to document.
*
* Change the document to any new given document type.
*
* @since 2.0.0
* @access public
*
* @param Document $document The document to switch to.
*/
public function switch_to_document( $document ) {
// If is already switched, or is the same post, return.
if ( $this->current_doc === $document ) {
$this->switched_data[] = false;
return;
}
$this->switched_data[] = [
'switched_doc' => $document,
'original_doc' => $this->current_doc, // Note, it can be null if the global isn't set
];
$this->current_doc = $document;
}
/**
* Restore document.
*
* Rollback to the original document.
*
* @since 2.0.0
* @access public
*/
public function restore_document() {
$data = array_pop( $this->switched_data );
// If not switched, return.
if ( ! $data ) {
return;
}
$this->current_doc = $data['original_doc'];
}
/**
* Get current document.
*
* Retrieve the current document.
*
* @since 2.0.0
* @access public
*
* @return Document The current document.
*/
public function get_current() {
return $this->current_doc;
}
/**
* Get groups.
*
* @since 2.0.0
* @deprecated 2.4.0
* @access public
*
* @return array
*/
public function get_groups() {
_deprecated_function( __METHOD__, '2.4.0' );
return [];
}
public function localize_settings( $settings ) {
$translations = [];
foreach ( $this->get_document_types() as $type => $class ) {
$translations[ $type ] = $class::get_title();
}
return array_replace_recursive( $settings, [
'i18n' => $translations,
] );
}
private function register_types() {
if ( ! did_action( 'elementor/documents/register' ) ) {
/**
* Register Elementor documents.
*
* @since 2.0.0
*
* @param Documents_Manager $this The document manager instance.
*/
do_action( 'elementor/documents/register', $this );
}
}
}
Fatal error: Uncaught Error: Class 'Elementor\Core\Documents_Manager' not found in /var/www/html/exs.com.br/web/blog/wp-content/plugins/elementor/includes/plugin.php:597
Stack trace:
#0 /var/www/html/exs.com.br/web/blog/wp-content/plugins/elementor/includes/plugin.php(531): Elementor\Plugin->init_components()
#1 /var/www/html/exs.com.br/web/blog/wp-includes/class-wp-hook.php(324): Elementor\Plugin->init('')
#2 /var/www/html/exs.com.br/web/blog/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#3 /var/www/html/exs.com.br/web/blog/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#4 /var/www/html/exs.com.br/web/blog/wp-settings.php(727): do_action('init')
#5 /var/www/html/exs.com.br/web/blog/wp-config.php(113): require_once('/var/www/html/e...')
#6 /var/www/html/exs.com.br/web/blog/wp-load.php(50): require_once('/var/www/html/e...')
#7 /var/www/html/exs.com.br/web/blog/wp-blog-header.php(13): require_once('/var/www/html/e...')
#8 /var/www/html/exs.com.br/web/blog/index.php(17): require('/var/www/h in /var/www/html/exs.com.br/web/blog/wp-content/plugins/elementor/includes/plugin.php on line 597