私が取り組んでいるカスタムページに配置したオーディオショートコードのカスタム用語メタフィールドを呼び出そうとしています。このフィールドには、メディアライブラリにアップロードした.mp3ファイルへのリンクが含まれています。フィールドに実際にオーディオファイルへのリンクが含まれている場合は、オーディオプレーヤーと「オーディオ」というテキストだけを表示するIFステートメントがあります。しかし、現場にリンクがあっても、フロントエンドには何も表示されません。
フィールドに対してvar_dumpを実行したところ、次のように出力されました。
string(95) "echo do_shortcode([audio src="http://www.foo.com/wp-content/uploads/2018/07/audio.mp3"])"
これが私の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;}
}
そして、これが私のページにあるコードです。
$first_audio = first_audio();
if (!empty($first_audio)) { ?>
<p><?php first_audio(); ?></p>
<?php }
?>
私はまたfirst_audio();
をエコーしようとしました、しかしそれはちょうどvar_dump
がしたようにちょうど全体のリンクをエコーしました。
次の行を置き換える
$result .= 'echo do_shortcode([audio src="'. get_term_meta($term_id, 'audioreco_64856', true) .'"])';
と
$result .= do_shortcode('[audio src="'. get_term_meta($term_id, 'audioreco_64856', true) .'"]');
関数の結果をエコーする
<p><?php echo first_audio(); ?></p>