web-dev-qa-db-ja.com

オーディオショートコードを拡張する

現時点では、オーディオショートコードはsrcloopautoplayおよびpreloadの4つの属性しか許可していません。ただし、オーディオファイルをアップロードすると、アルバムアート、アーティスト、年などの非常に有用なメタデータが付属しているので、それも表示できる場合は非常に便利です。私はメタデータも同様にショートコードに含めることができるようにオーディオショートコードを拡張する方法を探していました。

これまでのところ、既存のショートコードをフィルタリングするために使用できるshortcode_atts_{$shortcode}に出会いましたが、明らかに既存の属性をフィルタリングできるだけで、新しいものを追加することはできません。新しいショートコードを作成するつもりはありませんが、既存のものに追加または拡張するので、ユーザーはこの効果を得るために新しいショートコードを使用する必要はありません。これを達成することができるとにかくありますか?私はどんなポインタにも感謝しています。

2
charlenemasters

私はフィルタ 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 );
1
realloc

これをフォローしたいと思いました。何らかの理由で、$ audio変数が空白になっていました。 $ atts ["mp3"]値を使用してDBを検索し、メディアIDを見つけました。その後、charlenemastersによって提供された回答に基づいてメタデータを取得しました。

0
Tim