web-dev-qa-db-fra.com

Le shortcode du lecteur audio ne s'affiche pas lors de l'utilisation d'une variable

J'essaie d'appeler un champ méta de terme personnalisé dans un shortcode audio que j'ai placé sur une page personnalisée sur laquelle je travaille. Le champ contient un lien vers un fichier .mp3 que j'ai téléchargé sur ma médiathèque. J'ai une déclaration IF qui ne montrera que le lecteur audio avec le texte "Audio", si le champ contient réellement un lien vers un fichier audio. Cependant, rien ne se présente au début, même s’il existe un lien sur le terrain.

J'ai fait un var_dump sur le terrain, et il a généré:

string(95) "echo do_shortcode([audio src="http://www.foo.com/wp-content/uploads/2018/07/audio.mp3"])"

Voici le code que j'ai actuellement dans mon functions.php:

function first_audio() {
                        $terms = get_the_terms($post->ID, 'firstb');
                        $result = "";
                        if (is_array($terms) || is_object($terms)){
                        foreach ($terms as $term) {
                            $term_id = $term->term_id;
                            $result .= 'echo do_shortcode([audio src="'.  get_term_meta($term_id, 'audioreco_64856', true)  .'"])';

                        }
                    }
                    if (!empty(get_term_meta($term_id, 'audioreco_64856', true))) {
                        return $result;}
                    }

Et voici le code que j'ai sur ma page:

$first_audio = first_audio();
if (!empty($first_audio)) { ?>
<p><?php first_audio(); ?></p>
<?php }
    ?>

J'ai également essayé de faire écho à first_audio();, mais cela renvoyait tout le lien, tout comme le var_dump.

1
Darren

Remplacer la ligne suivante

 $result .= 'echo do_shortcode([audio src="'.  get_term_meta($term_id, 'audioreco_64856', true)  .'"])';

avec

$result .=  do_shortcode('[audio src="'.  get_term_meta($term_id, 'audioreco_64856', true)  .'"]');

Écho le résultat de la fonction

<p><?php echo first_audio(); ?></p>
1
Aparna_29