web-dev-qa-db-fra.com

Existe-t-il une fonction intégrée permettant de voir si une URL est compatible avec oEmbed?

Je veux pouvoir prendre une URL et voir si le domaine est l'un de ceux que Wordpress prend en charge pour ajouter des intégrations via oEmbed. Y at-il une fonction intégrée qui fait cela dans WordPress ou aurais-je besoin de créer la mienne?

Exemple: si j'ai l'URL d'un site vidéo, je veux pouvoir examiner l'URL et pouvoir dire si le domaine est pris en charge par WordPress pour une utilisation en tant que vidéo.

1
Manny Fleurmond

wp-includes/class-oembed.php a une variable publique $providers. Vous pouvez donc créer une petite fonction pour les obtenir tous:

function list_oembed_providers( $print = TRUE )
{
    require_once( ABSPATH . WPINC . '/class-oembed.php' );
    $oembed = _wp_oembed_get_object();

    $print and print '<pre>' . htmlspecialchars( var_export( $oembed->providers, TRUE ) ) . '</pre>';
    return $oembed->providers;
}

Si vous appelez cette fonction…

list_oembed_providers();

… Vous obtenez dans WordPress 3.1.1:

array (
  '#http://(www\\.)?youtube.com/watch.*#i' => 
  array (
    0 => 'http://www.youtube.com/oembed',
    1 => true,
  ),
  'http://youtu.be/*' => 
  array (
    0 => 'http://www.youtube.com/oembed',
    1 => false,
  ),
  'http://blip.tv/file/*' => 
  array (
    0 => 'http://blip.tv/oembed/',
    1 => false,
  ),
  '#http://(www\\.)?vimeo\\.com/.*#i' => 
  array (
    0 => 'http://www.vimeo.com/api/oembed.{format}',
    1 => true,
  ),
  '#http://(www\\.)?dailymotion\\.com/.*#i' => 
  array (
    0 => 'http://www.dailymotion.com/api/oembed',
    1 => true,
  ),
  '#http://(www\\.)?flickr\\.com/.*#i' => 
  array (
    0 => 'http://www.flickr.com/services/oembed/',
    1 => true,
  ),
  '#http://(.+)?smugmug\\.com/.*#i' => 
  array (
    0 => 'http://api.smugmug.com/services/oembed/',
    1 => true,
  ),
  '#http://(www\\.)?hulu\\.com/watch/.*#i' => 
  array (
    0 => 'http://www.hulu.com/api/oembed.{format}',
    1 => true,
  ),
  '#http://(www\\.)?viddler\\.com/.*#i' => 
  array (
    0 => 'http://lab.viddler.com/services/oembed/',
    1 => true,
  ),
  'http://qik.com/*' => 
  array (
    0 => 'http://qik.com/api/oembed.{format}',
    1 => false,
  ),
  'http://revision3.com/*' => 
  array (
    0 => 'http://revision3.com/api/oembed/',
    1 => false,
  ),
  'http://i*.photobucket.com/albums/*' => 
  array (
    0 => 'http://photobucket.com/oembed',
    1 => false,
  ),
  'http://gi*.photobucket.com/groups/*' => 
  array (
    0 => 'http://photobucket.com/oembed',
    1 => false,
  ),
  '#http://(www\\.)?scribd\\.com/.*#i' => 
  array (
    0 => 'http://www.scribd.com/services/oembed',
    1 => true,
  ),
  'http://wordpress.tv/*' => 
  array (
    0 => 'http://wordpress.tv/oembed/',
    1 => false,
  ),
  '#http://(answers|surveys)\\.polldaddy.com/.*#i' => 
  array (
    0 => 'http://polldaddy.com/oembed/',
    1 => true,
  ),
  '#http://(www\\.)?funnyordie\\.com/videos/.*#i' => 
  array (
    0 => 'http://www.funnyordie.com/oembed',
    1 => true,
  ),
)
3
fuxia