You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.3 KiB
PHP
65 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* The WordPress
|
|
*
|
|
* @since 2.0.0
|
|
* @package RankMath
|
|
* @subpackage RankMath\Schema\Video
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMathPro\Schema\Video;
|
|
|
|
use RankMath\Helper;
|
|
use RankMath\Admin\Admin_Helper;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* WordPress class.
|
|
*/
|
|
class WordPress {
|
|
|
|
/**
|
|
* Match url.
|
|
*
|
|
* @param string $url Url to match.
|
|
* @return bool
|
|
*/
|
|
public static function match( $url ) {
|
|
$type = wp_check_filetype( $url, wp_get_mime_types() );
|
|
|
|
if ( ! in_array( strtolower( $type['ext'] ), wp_get_video_extensions(), true ) ) {
|
|
return [];
|
|
}
|
|
|
|
return self::fetch_data( $url );
|
|
}
|
|
|
|
/**
|
|
* Fetch data.
|
|
*
|
|
* @param string $url Video Source.
|
|
* @return array
|
|
*/
|
|
private static function fetch_data( $url ) {
|
|
$data = [];
|
|
$attachment_id = attachment_url_to_postid( $url );
|
|
if ( $attachment_id ) {
|
|
$video_details = wp_get_attachment_metadata( $attachment_id );
|
|
$data = [
|
|
'width' => ! empty( $video_details['width'] ) ? $video_details['width'] : '',
|
|
'height' => ! empty( $video_details['height'] ) ? $video_details['height'] : '',
|
|
];
|
|
}
|
|
|
|
return array_merge(
|
|
[
|
|
'src' => $url,
|
|
'embed' => false,
|
|
],
|
|
$data
|
|
);
|
|
}
|
|
}
|