web-dev-qa-db-fra.com

Comment obtenir le shortcode [video] pour autoriser les paramètres de chaîne de requête?

Utiliser WordPress 4.4.2 (dernière version au moment de l'écriture)

J'essaie d'utiliser le shortcode [video] pour afficher une vidéo sur mon site. Si je fournis une URL se terminant par le filename.mp4, cela fonctionne bien:

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

mais lorsque j'ajoute un paramètre de chaîne de requête à la fin de l'URL, il refuse d'afficher le lecteur vidéo. Au lieu de cela, il me montre simplement un lien vers l'URL:

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

J'ai essayé d'utiliser l'attribut mp4, et le résultat est identique.

Comment obtenir le shortcode [video] autorisant les paramètres de chaîne de requête dans les attributs src ou mp4?

1
Derick Bailey

Vous avez deux options.

Soit vous filtrez vos extensions vidéo valides comme recommandé par @birgire.

Je me souviens d'un problème similaire pour le shortcode audio ici .

Là, j'ai trouvé une solution de contournement en autorisant l'extension audio vide .

Vous pouvez essayer quelque chose de similaire avec les extensions vidéo. Voici un plugin de démonstration:

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

Vous devez ensuite restreindre cela au besoin, par ex. de la même manière que je l'ai fait avec le shortcode audio.

J'ai cherché les tickets de trac et trouvé celui-ci # 30377 sur lequel on travaille.

Ou filtrez le shortcode complet selon vos besoins avec le filtre wp_video_shortcode. Par exemple. ajoutez un autre attribut au shortcode appelé type et modifiez le résultat selon vos besoins.

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.
     */
}

Source: https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-includes/media.php#L2369

2
iantsch

Je me souviens d'un problème similaire pour le shortcode audio ici .

Là, j'ai trouvé une solution de contournement en autorisant l'extension audio vide .

Vous pouvez essayer quelque chose de similaire avec les extensions vidéo. Voici un plugin de démonstration:

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

Vous devez ensuite restreindre cela au besoin, par ex. de la même manière que je l'ai fait avec le shortcode audio.

J'ai cherché les tickets de trac et trouvé celui-ci # 30377 sur lequel on travaille.

2
birgire