Как я могу получить шорткод [видео], чтобы разрешить параметры строки запроса?
Использование WordPress 4.4.2 (последняя версия на момент написания этой статьи)
Я пытаюсь использовать шорткод [видео], чтобы показать видео на моем сайте. Если я предоставлю URL-адрес, заканчивающийся на filename.mp4
, он будет работать нормально:
[video src="http://example.com/filename.mp4"]
Но когда я добавляю параметр строки запроса в конец URL-адреса, он отказывается показывать видеоплеер. Вместо этого он просто показывает мне ссылку на URL:
[video src="http://example.com/filename.mp4?type=0"]
Я пробовал использовать атрибут mp4
, и он выдает то же самое результат.
Как мне получить шорткод [видео], чтобы разрешить параметры строки запроса в атрибутах src
или mp4
?
2 answers
У вас есть два варианта.
Либо вы фильтруете допустимые расширения видео, как рекомендовано @birgire.
Я помню аналогичную проблему для звукового шорткода здесь.
Там я нашел обходной путь, разрешив пустое звуковое расширение.
Вы могли бы попробовать что-то подобное с расширениями видео. Вот демонстрационный плагин:
/** * Allow the empty video extension to support GET parameters */ add_filter( 'wp_video_extensions', function( $ext ) { $ext[] = ''; return $ext; } );
Затем вы должны ограничить это по мере необходимости, например, аналогично тому , как это сделал я с помощью звукового шорткода.
Я поискал билеты на транспорт и нашел этот #30377 над этим ведется работа.
Или отфильтруйте весь шорткод в соответствии с вашими потребностями с помощью фильтра wp_video_shortcode
. Например, добавьте в шорткод еще один атрибут, называемый типом, и измените результат в соответствии с вашими потребностями.
function my_video_shortcode($output, $atts, $video, $post_id, $library ) {
/**
* @param string $output Video shortcode HTML output.
* @param array $atts Array of video shortcode attributes.
* @param string $video Video file.
* @param int $post_id Post ID.
* @param string $library Media library used for the video shortcode.
*/
}
Источник: https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-includes/media.php#L2369
Я помню аналогичную проблему для звукового шорткода здесь.
Там я нашел обходной путь, разрешив пустое звуковое расширение.
Вы могли бы попробовать что-то подобное с расширениями видео. Вот демонстрационный плагин:
<?php
/**
* Plugin Name: GET Parameters In The Video Shortcode
* Description: Allow video files with GET parameters in the video shortcode [video]
* Author: Birgir Erlendsson (birgire)
* Plugin URI: https://wordpress.stackexchange.com/a/220573/26350
* Version: 1.0.0
*/
add_filter( 'wp_video_shortcode_override', function( $html, $atts )
{
add_filter( 'wp_video_extensions', 'wpse_video_extensions' );
return $html;
}, 10, 2 );
function wpse_video_extensions( $ext )
{
remove_filter( current_filter(), __FUNCTION__ );
$ext[] = '';
return $ext;
}
Затем вы должны ограничить это по мере необходимости, например, аналогично тому, как я сделал с шорткодом аудио.
Я поискал билеты на транспорт и нашел этот #30377 над этим ведется работа.