| Server IP : 108.167.142.43 / Your IP : 216.73.217.58 Web Server : Apache System : Linux gator4174.hostgator.com 5.14.0-687.39.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Aug 18 06:09:16 EDT 2026 x86_64 User : delarice ( 2406) PHP Version : 8.3.36 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home2/delarice/www/wp-content/plugins/elementor/modules/mcp/abilities/ |
Upload File : |
<?php
namespace Elementor\Modules\Mcp\Abilities;
use Elementor\Modules\Mcp\Abilities\Utils\Document_Mutation_Links;
use Elementor\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Update_Settings_Ability extends Abstract_Ability {
protected function get_ability_id(): string {
return 'elementor/update-page-settings';
}
public function is_exposed_via_proxy(): bool {
return false;
}
protected function get_definition(): Ability_Definition {
return new Ability_Definition(
__( 'Update Elementor Page Settings', 'elementor' ),
__( 'Updates Elementor document-level settings for a post (for example page layout, title visibility, or custom page settings). Pass only the keys you want to change. Ask the user for the URL or post ID. Use get-page-structure when you also need the element tree. Requires permission to edit the target post.', 'elementor' ),
'elementor',
[
'type' => 'object',
'properties' => [
'success' => [ 'type' => 'boolean' ],
'post_id' => [ 'type' => 'integer' ],
'preview_url' => Document_Mutation_Links::preview_schema_property(),
'llm_instructions' => Document_Mutation_Links::llm_instructions_schema_property(),
],
],
[
'annotations' => [
'readonly' => false,
'idempotent' => false,
'destructive' => true,
],
],
function () {
return current_user_can( 'edit_posts' );
},
[
'type' => 'object',
'required' => [ 'post_id', 'settings' ],
'properties' => [
'post_id' => [
'type' => 'integer',
'description' => 'WordPress post ID of the Elementor document.',
],
'settings' => [
'type' => 'object',
'description' => 'Partial document settings object; merged into existing settings. Schema enforcement is delegated to document->save().',
'additionalProperties' => true,
],
],
]
);
}
public function execute( $input = [] ) {
$post_id = isset( $input['post_id'] ) ? absint( $input['post_id'] ) : 0;
$settings = isset( $input['settings'] ) && is_array( $input['settings'] ) ? $input['settings'] : null;
if ( ! $post_id ) {
return new \WP_Error( 'invalid_post_id', __( 'A valid post_id is required.', 'elementor' ), [ 'status' => \WP_Http::BAD_REQUEST ] );
}
if ( null === $settings ) {
return new \WP_Error( 'invalid_settings', __( 'The settings object is required.', 'elementor' ), [ 'status' => \WP_Http::BAD_REQUEST ] );
}
$document = Plugin::$instance->documents->get( $post_id );
if ( ! $document ) {
return new \WP_Error( 'document_not_found', __( 'Document not found.', 'elementor' ), [ 'status' => \WP_Http::NOT_FOUND ] );
}
if ( ! $document->is_editable_by_current_user() ) {
return new \WP_Error( 'rest_cannot_edit', __( 'Sorry, you are not allowed to edit this document.', 'elementor' ), [ 'status' => \WP_Http::FORBIDDEN ] );
}
$saved = $document->save( [ 'settings' => $settings ] );
if ( ! $saved ) {
return new \WP_Error( 'save_failed', __( 'Could not save document settings.', 'elementor' ), [ 'status' => \WP_Http::INTERNAL_SERVER_ERROR ] );
}
return [
'success' => true,
'post_id' => $post_id,
] + Document_Mutation_Links::for_document( $document );
}
}