web-dev-qa-db-ja.com

"media_send_to_editor"が音声かどうかを確認するにはどうすればいいですか?

メディアのアップロード時に追加のフィールドを作成する機能を使用しています。これらは画像とビデオにのみ重要ですが、音声をアップロードしている場合は無用であり、混乱を招くことさえあります。

これが機能です。

function give_linked_images_data($html, $id, $caption, $title, $align, $url, $size, $alt = '' ){
    $classes = 'img image-link';
    if (get_post_meta($id, "pop_title") == '') $poptitle = ''; else $poptitle = ' data-title="'. get_post_meta($id, "pop_title", true) .'"';    
    $html = preg_replace('/(<a.*?)>/', '$1 data-toggle="lightbox" '. $poptitle .' ' . $classes . '" >', $html);
    return $html;
}

機能はと追加されます

add_filter('image_send_to_editor','give_linked_images_data',10,8);

...と私は使用して同様の機能を持っている

add_filter('media_send_to_editor','give_linked_images_data',10,8);

...しかしそれはvideo and audioアップロードで動作します。カスタムフィールドを無効にするために、アップロードされているメディアがオーディオかどうかをどのように検出できますか?

2
Daniel Lemes

次の boolean 関数を使用して、 MIMEタイプ のチェックを単純化できます。

  • wp_attachment_is( 'image', $id )

  • wp_attachment_is( 'video', $id )

  • wp_attachment_is( 'audio', $id )

$idは添付ファイルのIDです。

添付ファイルのIDは、実際にはmedia_send_to_editorフィルタコールバックの入力引数の1つです。

私たちもあります:

  • wp_attachment_is_image( $id )

これはwp_attachment_is( 'image', $id )のラッパーです。

参照:

2
birgire

私は方法を見つけました:

$mime_type = get_post_mime_type($post->ID);
// all mime https://codex.wordpress.org/Function_Reference/get_allowed_mime_types

// videos and images only
$permit_mime = array('image/jpeg','image/gif','image/png','image/bmp','image/tiff','image/x-icon','video/x-ms-asf','video/x-ms-wmv','video/x-ms-wmx','video/x-ms-wm','video/avi','video/divx','video/x-flv','video/quicktime','video/mpeg','video/mp4','video/ogg','video/webm','video/x-matroska');
// if is video or image
if (in_array($mime_type, $permit_mime)) {
    // the function
}
1
Daniel Lemes