Как я могу получить шорткод [видео], чтобы разрешить параметры строки запроса?


Использование 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?

Author: Derick Bailey, 2016-03-13

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

 2
Author: iantsch, 2017-04-13 12:37:50

Я помню аналогичную проблему для звукового шорткода здесь.

Там я нашел обходной путь, разрешив пустое звуковое расширение.

Вы могли бы попробовать что-то подобное с расширениями видео. Вот демонстрационный плагин:

<?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 над этим ведется работа.

 2
Author: birgire, 2017-04-13 12:37:34