web-dev-qa-db-fra.com

Do_Shortcode ne fonctionne pas pour Embed

J'essaie d'utiliser des types de champs personnalisés pour intégrer des vidéos Youtube de manière plus organisée. L'utilisation de Do_Shortcode () semble fonctionner parfaitement, mais voici ce qui suit:

<?php echo do_shortcode('[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]'); ?>

Ne semble pas fonctionner, cependant dans le même fichier single.php cela fonctionne parfaitement:

<?php echo do_shortcode('[gallery link="file" size="thumbnail" icontag="div"]'); ?>

Je les mets les uns après les autres pour les tester, toutes les raisons pour lesquelles le shortcode [embed] ne soit pas analysé (cela ne montre rien)

Si je fais le shortcode incorporé directement dans le post, cela fonctionne parfaitement.

Merci,

Jordan

6
Jordash

[embed] n'est pas un shortcode standard. La plupart du temps, cela ne fait rien. Que se passe-t-il lorsque le contenu de la publication passe par le filtre the_content?

  1. [emded] est actuellement inscrit pour ne rien faire (__return_false())

  2. Le filtre WP_Embed->run_shortcode() est exécuté avec une priorité 8 faible

  3. tous les codes courts sont désactivés
  4. [embed] est inscrit à WP_Embed->shortocde()
  5. do_shortcode() s'exécute sur le contenu (ne fait que incorporer, puisque reste est désactivé)
  6. les codes courts sont restaurés à leur état d'origine, [embed] redevient inutile.

Donc, je pense rapidement à quelque chose à essayer:

global $wp_embed;

echo $wp_embed->run_shortcode('[embed]whatever[/embed]');

Mais notez que la mise en cache est également impliquée (les résultats de l’incorporation sont sauvegardés dans un champ personnalisé de la publication, sinon il faudrait faire une requête HTTP à chaque fois) et vous risquez de la rompre, à moins que vous ne le fassiez dans une boucle et à fonctionne normalement. Peut-être même alors.

13
Rarst

Votre code devrait fonctionner, éventuellement une idée pour un ticket de traçage.

En attendant, vous pouvez essayer:

global $wp_embed;
$post_embed = $wp_embed->run_shortcode('[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]');
echo $post_embed;
3
Wyck
   $video_url = get_post_meta($post_id, 'video_url',true);
    //or
    $video_url .= 'video url';
    $check_embeds=$GLOBALS['wp_embed']->run_shortcode( '[embed]'. $video_url .'[/embed]' );
    echo $check_embeds;
0
Jung Rozal