Commit realizado el 12:13:52 08-04-2024
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
/**
|
||||
* The Video Schema generator.
|
||||
*
|
||||
* @since 2.0.9
|
||||
* @package RankMathPro
|
||||
* @subpackage RankMathPro\Schema
|
||||
* @author Rank Math <support@rankmath.com>
|
||||
*/
|
||||
|
||||
namespace RankMathPro\Schema;
|
||||
|
||||
use RankMath\Helper;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
* Video_Schema_Generator class.
|
||||
*/
|
||||
class Video_Schema_Generator extends \WP_Background_Process {
|
||||
/**
|
||||
* Prefix.
|
||||
*
|
||||
* (default value: 'wp')
|
||||
*
|
||||
* @var string
|
||||
* @access protected
|
||||
*/
|
||||
protected $prefix = 'rank_math';
|
||||
|
||||
/**
|
||||
* Action.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $action = 'add_video_schema';
|
||||
|
||||
/**
|
||||
* Main instance
|
||||
*
|
||||
* Ensure only one instance is loaded or can be loaded.
|
||||
*
|
||||
* @return Video_Schema_Generator
|
||||
*/
|
||||
public static function get() {
|
||||
static $instance;
|
||||
|
||||
if ( is_null( $instance ) && ! ( $instance instanceof Video_Schema_Generator ) ) {
|
||||
$instance = new Video_Schema_Generator();
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start creating batches.
|
||||
*
|
||||
* @param [type] $posts [description].
|
||||
*/
|
||||
public function start( $posts ) {
|
||||
$chunks = array_chunk( $posts, 10 );
|
||||
foreach ( $chunks as $chunk ) {
|
||||
$this->push_to_queue( $chunk );
|
||||
}
|
||||
|
||||
$this->save()->dispatch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Complete.
|
||||
*
|
||||
* Override if applicable, but ensure that the below actions are
|
||||
* performed, or, call parent::complete().
|
||||
*/
|
||||
protected function complete() {
|
||||
delete_option( 'rank_math_video_posts' );
|
||||
Helper::add_notification(
|
||||
esc_html__( 'Rank Math: Added Video Schema to posts successfully.', 'rank-math-pro' ),
|
||||
[
|
||||
'type' => 'success',
|
||||
'id' => 'rank_math_video_posts',
|
||||
'classes' => 'rank-math-notice',
|
||||
]
|
||||
);
|
||||
|
||||
parent::complete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Task to perform
|
||||
*
|
||||
* @param array $posts Posts to process.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function task( $posts ) {
|
||||
try {
|
||||
foreach ( $posts as $post ) {
|
||||
$this->convert( $post );
|
||||
}
|
||||
return false;
|
||||
} catch ( Exception $error ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert post.
|
||||
*
|
||||
* @param int $post_id Post ID.
|
||||
*/
|
||||
public function convert( $post_id ) {
|
||||
update_post_meta( $post_id, '_rank_math_video', 'true' );
|
||||
( new Video\Parser( get_post( $post_id ) ) )->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Find posts.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function find_posts() {
|
||||
global $wpdb;
|
||||
$posts = get_option( 'rank_math_video_posts' );
|
||||
if ( false !== $posts ) {
|
||||
return $posts;
|
||||
}
|
||||
|
||||
// Schema Posts.
|
||||
$post_types = array_filter(
|
||||
Helper::get_accessible_post_types(),
|
||||
function( $post_type ) {
|
||||
return 'attachment' !== $post_type && Helper::get_settings( "titles.pt_{$post_type}_autodetect_video", 'on' );
|
||||
}
|
||||
);
|
||||
|
||||
$posts = get_posts(
|
||||
[
|
||||
'post_type' => array_keys( $post_types ),
|
||||
'numberposts' => -1,
|
||||
'fields' => 'ids',
|
||||
'meta_query' => [
|
||||
[
|
||||
'key' => 'rank_math_schema_VideoObject',
|
||||
'compare' => 'NOT EXISTS',
|
||||
],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
update_option( 'rank_math_video_posts', $posts, false );
|
||||
|
||||
return $posts;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user