- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
114 lines
3.2 KiB
PHP
Executable File
114 lines
3.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* The admin-specific functionality of the plugin.
|
|
*
|
|
* @since 1.0.223
|
|
* @package RankMath
|
|
* @subpackage RankMath\Admin
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Admin;
|
|
|
|
use RankMath\Helper;
|
|
use RankMath\Helpers\Editor;
|
|
use RankMath\Helpers\Param;
|
|
use RankMath\Traits\Hooker;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Lock_Modified_Date class.
|
|
*
|
|
* @codeCoverageIgnore
|
|
*/
|
|
class Lock_Modified_Date {
|
|
|
|
use Hooker;
|
|
|
|
/**
|
|
* Register hooks.
|
|
*/
|
|
public function __construct() {
|
|
$this->action( 'rest_api_init', 'init_rest_api' );
|
|
$this->action( 'wp_insert_post_data', 'update_modified_date', 999, 3 );
|
|
}
|
|
|
|
/**
|
|
* Add REST filter to modify the post object.
|
|
*/
|
|
public function init_rest_api() {
|
|
$post_types = Helper::get_allowed_post_types();
|
|
foreach ( $post_types as $post_type ) {
|
|
$this->filter( "rest_pre_insert_{$post_type}", 'update_last_modified_parameter', 99, 2 );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add last_modified parameter to a post when a post is updated from Block Editor.
|
|
*
|
|
* @param WP_POST $prepared_post Post object.
|
|
* @param WP_REST_Request $request Request object.
|
|
*/
|
|
public function update_last_modified_parameter( $prepared_post, $request ) {
|
|
$params = $request->get_params();
|
|
if ( isset( $params['meta']['rank_math_lock_modified_date'] ) ) {
|
|
$prepared_post->lock_modified_date = ! empty( $params['meta']['rank_math_lock_modified_date'] );
|
|
}
|
|
|
|
return $prepared_post;
|
|
}
|
|
|
|
/**
|
|
* Lock Modified date by overwriting the old value.
|
|
*
|
|
* @param array $data An array of slashed, sanitized, and processed post data.
|
|
* @param array $postarr An array of sanitized (and slashed) but otherwise unmodified post data.
|
|
*/
|
|
public function update_modified_date( $data, $postarr ) {
|
|
$post_id = ! empty( $postarr['ID'] ) ? $postarr['ID'] : 0;
|
|
if (
|
|
! $post_id ||
|
|
! isset( $postarr['post_modified'], $postarr['post_modified_gmt'] ) ||
|
|
! $this->lock_modified_date( $postarr, $post_id )
|
|
) {
|
|
return $data;
|
|
}
|
|
|
|
$data['post_modified'] = $postarr['post_modified'];
|
|
$data['post_modified_gmt'] = $postarr['post_modified_gmt'];
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* Whether to lock modified date.
|
|
*
|
|
* @param array $data An array of sanitized (and slashed) but otherwise unmodified post data.
|
|
* @param int $post_id Post ID.
|
|
*/
|
|
private function lock_modified_date( $data, $post_id ) {
|
|
if ( ! Editor::can_add_lock_modified_date() ) {
|
|
return false;
|
|
}
|
|
|
|
if ( Param::request( 'action' ) === 'et_fb_ajax_save' ) {
|
|
if (
|
|
empty( $_REQUEST['et_fb_save_nonce'] ) ||
|
|
! wp_verify_nonce( Param::request( 'et_fb_save_nonce' ), 'et_fb_save_nonce' )
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
$options = ! empty( $_REQUEST['options'] ) ? $_REQUEST['options'] : []; //phpcs:ignore
|
|
return ! empty( $options['conditional_tags'] ) && ! empty( $options['conditional_tags']['lock_modified_date'] );
|
|
}
|
|
|
|
if ( Param::request( 'action' ) === 'elementor_ajax' ) {
|
|
return wp_verify_nonce( Param::request( '_nonce' ), 'elementor_ajax' ) && ! empty( $_REQUEST['lock_modified_date'] );
|
|
}
|
|
|
|
return isset( $data['lock_modified_date'] ) ? $data['lock_modified_date'] : Helper::get_post_meta( 'lock_modified_date', $post_id );
|
|
}
|
|
}
|