web-dev-qa-db-fra.com

echo do_shortcode ne fonctionne pas sur le template du thème

Je ne sais pas ce qui cause le problème mais le echo do_shortcode ne fonctionne pas sur le modèle de mon thème, mais il fonctionne sur le modèle de mon plugin et le shortcode fonctionne sur mes publications et mes pages. Assez bizarre. Voici le code

<?php 
$my_query = new WP_Query('category_name=video post&posts_per_page=10');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; 
?>

    <li>
    <h3><a href = "<?php the_permalink();?>"><?php the_title();?></a></h3>
    <?php the_post_thumbnail(); ?>                          
    <p> 
    <?php the_excerpt();?>
    <?php                                       
    $urlbox = get_video_box();

    echo $urlbox[0]; // echo out the url of a post                     
    echo $urlbox[1]; // echo out the url description of a post
    echo do_shortcode('[jwplayer config="Out-of-the-Box" file="' . $urlbox[0] . '" image="http://www.mywebsite.com/myimage.jpg"]');
    ?>          

    </p>
    </li>

<?php endwhile; ?>  

J'utilise le plugin JW Player, encore une fois, le shortcode travaille sur le modèle et la publication/page du plugin. mais sur le modèle de mon thème sa ne fonctionne pas .. aidez-moi s'il vous plaît ici. Merci

2
markyeoj

Selon le développeur de jwPlayer, il était nécessaire de mettre en œuvre le plug-in en tant que filtre pour pouvoir prendre en charge '.' dans les attributs de balises. Par conséquent, do_shortcode(..) ne fonctionne pas, mais jwplayer_tag_callback(..) renverra le résultat souhaité.

En faisant correspondre votre exemple, exécutez simplement:

echo jwplayer_tag_callback('[jwplayer config="Out-of-the-Box" file="' . $urlbox[0] . '" image="http://www.mywebsite.com/myimage.jpg"]');
0
david

Mise à jour pour tous ceux qui visitent ce fil (2015)

jwplayer_tag_callback() ne fonctionne plus, vous obtiendrez une erreur fatale vous indiquant que la fonction n'est pas définie.

Au lieu de cela, insérez un lecteur par programme comme ceci:

echo JWP6_Shortcode::the_content_filter( '[jwplayer file="'. $videoUrl .'"]' );

(Trouvé ici .)

1
Robert