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
[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
?
[emded]
est actuellement inscrit pour ne rien faire (__return_false()
)
Le filtre WP_Embed->run_shortcode()
est exécuté avec une priorité 8
faible
[embed]
est inscrit à WP_Embed->shortocde()
do_shortcode()
s'exécute sur le contenu (ne fait que incorporer, puisque reste est désactivé)[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.
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;
$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;