現時点では、オーディオショートコードはsrc
、loop
、autoplay
およびpreload
の4つの属性しか許可していません。ただし、オーディオファイルをアップロードすると、アルバムアート、アーティスト、年などの非常に有用なメタデータが付属しているので、それも表示できる場合は非常に便利です。私はメタデータも同様にショートコードに含めることができるようにオーディオショートコードを拡張する方法を探していました。
これまでのところ、既存のショートコードをフィルタリングするために使用できるshortcode_atts_{$shortcode}
に出会いましたが、明らかに既存の属性をフィルタリングできるだけで、新しいものを追加することはできません。新しいショートコードを作成するつもりはありませんが、既存のものに追加または拡張するので、ユーザーはこの効果を得るために新しいショートコードを使用する必要はありません。これを達成することができるとにかくありますか?私はどんなポインタにも感謝しています。
私はフィルタ wp_audio_shortcode を使用します:
/**
* Filter the audio shortcode output.
*
* @since 3.6.0
*
* @param string $html Audio shortcode HTML output.
* @param array $atts Array of audio shortcode attributes.
* @param string $audio Audio file.
* @param int $post_id Post ID.
* @param string $library Media library used for the audio shortcode.
*/
return apply_filters( 'wp_audio_shortcode', $html, $atts, $audio, $post_id, $library );
$ audioは前述のように文字列ではなく、WP_Post型のオブジェクトのようです。メタ値を取得するために$ audio-> IDを使用できます。
function wpse_163324_audio_filter( $html, $atts, $audio, $post_id, $library ) {
// Use something like
// $meta_values = get_post_meta( $audio->ID, 'your_audio_metas', true );
// to get the meta values and add them to the var $html like
// $html .= '<div>your_content</div>';
return $html;
}
add_filter( 'wp_audio_shortcode', 'wpse_163324_audio_filter', 10, 5 );
これをフォローしたいと思いました。何らかの理由で、$ audio変数が空白になっていました。 $ atts ["mp3"]値を使用してDBを検索し、メディアIDを見つけました。その後、charlenemastersによって提供された回答に基づいてメタデータを取得しました。