web-dev-qa-db-ja.com

クエリ文字列パラメータを許可する[video]ショートコードを取得するにはどうすればよいですか。

WordPress 4.4.2(これを書いている時点での最新版)の使い方

私は自分のサイトにビデオを表示するために[video]ショートコードを使用しようとしています。私がfilename.mp4で終わるURLを提供するならば、それはうまく機能します:

[video src="http://example.com/filename.mp4"]

しかし、URLの最後にクエリ文字列パラメータを追加すると、ビデオプレーヤーが表示されません。代わりに、URLへのリンクを表示しているだけです。

[video src="http://example.com/filename.mp4?type=0"]

mp4属性を使用してみたところ、同じ結果が得られました。

srcまたはmp4属性でクエリ文字列パラメータを許可する[video]ショートコードを取得するにはどうすればよいですか

1
Derick Bailey

2つの選択肢があります。

@birgireが推奨しているように、有効なビデオの拡張子をフィルタリングしてください。

私はここでオーディオショートコード についても同様の問題を覚えています

そこで私はの音声拡張を許可することで回避策を見つけました。

あなたはビデオ拡張と同じようなことを試みることができます。これがデモ用のプラグインです。

/**
 * Allow the empty video extension to support GET parameters
 */
add_filter( 'wp_video_extensions', function( $ext )
{
    $ext[] = '';
    return $ext;
} );

その後、必要に応じてこれをさらに制限する必要があります。オーディオショートコードと同じように。

私はTracのチケットを検索し、このチケット #30377 を見つけました。

または、フィルタwp_video_shortcodeを使用して、必要に応じてショートコード全体をフィルタリングすることもできます。例えば。 typeというショートコードに別の属性を追加し、必要に応じて結果を修正します。

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
iantsch

私はここでオーディオショートコード についても同様の問題を覚えています

そこで私はの音声拡張を許可することで回避策を見つけました。

あなたはビデオ拡張と同じようなことを試みることができます。これがデモ用のプラグインです。

<?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;
}

その後、必要に応じてこれをさらに制限する必要があります。オーディオショートコードと同じように。

私はTracのチケットを検索し、このチケット #30377 を見つけました。

2
birgire