URLの最後にクエリ文字列を含むオーディオファイルでオーディオショートコードを使用しようとしていますが、うまくいきません。その理由は、Amazon S3で期限切れの署名付きURLを使用したいのです。
のようなURLを使うと
wp_audio_shortcode()
への呼び出しの中のsrcとしては、それはうまく働きます。しかし、私はのようなURLを使用すると
それからwp_audio_shortcode()
はオーディオ埋め込みとプレーヤーコードの代わりにHTMLリンクを吐き出すだけです。私のテストでは、ショートコードはURLの最後に.mp3のファイル拡張子が必要です。ショートコードをURLのクエリ文字列で機能させる方法はありますか?
提案する他の解決策はありますか?
問題は、wp_check_filetype()
がGET
パラメータを持つmp3
ファイルを認識しないことです。
私が見ることができる限りあなたは2つの選択肢があります。
1)オーディオショートコードをwp_audio_shortcode_override
フィルタで上書きします。
2)またはwp_audio_extensions
フィルタを介したオーディオ拡張を許可します。
後者のオプションを実装する方法の例を示します。
/**
* Allow unrecognize audio sources hosted on 'bucketname.s3.amazonaws.com'.
*
* @see http://wordpress.stackexchange.com/a/152352/26350
*/
add_filter( 'wp_audio_shortcode_override',
function( $html, $atts )
{
if( 'bucketname.s3.amazonaws.com' === parse_url( $atts['src'], PHP_URL_Host ) )
{
add_filter( 'wp_audio_extensions', 'wpse_152316_wp_audio_extensions' );
}
return $html;
}
, PHP_INT_MAX, 2 );
どこで
function wpse_152316_wp_audio_extensions( $ext )
{
remove_filter( current_filter(), __FUNCTION__ );
$ext[] = '';
return $ext;
}
だからここで何が起こっているのかを説明するために:
wp_get_audio_extensions()
呼び出しの直前、wp_audio_shortcode()
関数内で、空のオーディオファイル拡張子を許可するためにwp_audio_shortcode_override
フックを「ハイジャック」します。これは、wp_check_filetype()
チェックが認識できないファイル拡張子に対して空の文字列を返すためです。それから、この修正はオーディオソースがbucketname.s3.amazonaws.com
でホストされている場合にのみ適用されることを確認します。
これが役に立つことを願っています。