Você está procurando uma maneira de adicionar uma metabox ao menu da sua tela de edição de posts contendo todos os arquivos de áudio? Embora provavelmente exista um plugin para isso, criamos um snippet de código rápido que você pode usar para adicionar uma metabox personalizada listando todos os arquivos de áudio da biblioteca de mídia no WordPress.
Instruções:
Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou a um plugin específico do site:
add_action("admin_init", "audio_init");
add_action('save_post', 'save_audio_link');
function audio_init(){
add_meta_box("mp3-audio", "MP3 AUDIO", "audio_link", "post", "normal", "low");
}
function audio_link(){
global $post;
$custom = get_post_custom($post->ID);
$link = $custom["link"][0];
$count = 0;
echo '<div class="link_header">';
$query_audio_args = array(
'post_type' => 'attachment',
'post_mime_type' =>'audio',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
$query_audio = new WP_Query( $query_audio_args );
$audio = array();
echo '<select name="link">';
echo '<option class="audio_select">SELECT AUDIO FILE</option>';
foreach ( $query_audio->posts as $file) {
if($link == $audio[]= $file->guid){
echo '<option value="'.$audio[]= $file->guid.'" selected="true">'.$audio[]= $file->guid.'</option>';
}else{
echo '<option value="'.$audio[]= $file->guid.'">'.$audio[]= $file->guid.'</option>';
}
$count++;
}
echo '</select><br /></div>';
echo '<p>Selecting an audio file from the above list to attach to this post.</p>';
echo '<div class="audio_count"><span>Files:</span> <b>'.$count.'</b></div>';
}
function save_audio_link(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
update_post_meta($post->ID, "link", $_POST["link"]);
}
add_action( 'admin_head', 'audio_css' );
function audio_css() {
echo '<style type="text/css">
.audio_select{
font-weight:bold;
background:#e5e5e5;
}
.audio_count{
font-size:9px;
color:#0066ff;
text-transform:uppercase;
background:#f3f3f3;
border-top:solid 1px #e5e5e5;
padding:6px 6px 6px 12px;
margin:0px -6px -8px -6px;
-moz-border-radius:0px 0px 6px 6px;
-webkit-border-radius:0px 0px 6px 6px;
border-radius:0px 0px 6px 6px;
}
.audio_count span{color:#666;}
</style>';
}
function audio_file_url(){
global $wp_query;
$custom = get_post_custom($wp_query->post->ID);
echo $custom['link'][0];
}
Adicione este snippet de código para exibir o URL de áudio especificado no seu arquivo de template do WordPress.
<?
audio_file_url()
?>
Observação: Se esta é a sua primeira vez adicionando snippets de código no WordPress, consulte nosso guia sobre como adicionar snippets de código corretamente no WordPress, para não quebrar acidentalmente seu site.
Se você gostou deste trecho de código, considere conferir nossos outros artigos no site como: 19 melhores plugins do WordPress para fotógrafos e 30 maneiras de ganhar dinheiro com blogs online.
Oi Kevin, você poderia me dizer como consigo o URL para exibir como um shortcode de áudio no meu tema?
Olá,
Primeiro, isso é brilhante, acho que algo assim deveria fazer parte da funcionalidade principal do WordPress.
Eu tenho olhado isso para ver se posso usá-lo como guia para algo que estou fazendo. Estou me perguntando se há uma maneira de adaptar isso para mostrar categorias de links em vez de arquivos de mídia? Metaboxes com caixas de seleção e campos eu conheço, mas dropdowns são novidade para mim, e estou brincando com get_terms(link_category) mas está um pouco além de mim como integrá-lo a uma solução como esta.
Alguma ideia? Se não, tudo bem.
Obrigado!
Oi Jen,
O que você está tentando fazer? Se você me enviar um e-mail rápido sobre isso, eu devo ser capaz de ajudá-lo a começar.
http://wpsnipp.com/index.php/contact/
Muito obrigado! Era exatamente o que eu precisava!
Ei Doug, legal fico feliz que você gostou do snippet.
Oi, Obrigado pela sua postagem. Tenho uma pergunta: como exibir o nome do arquivo em vez do URL do arquivo. Desculpe pelo meu inglês ruim. Anne
Olá Anne, você notará nas linhas 24 e 26 – $file->guid mude a segunda instância em cada linha ou guid para post_title, por exemplo: $file->post_title
linha 24
———-
echo ‘guid.'” selected=”true”>’.$audio[]= $file->guid.”;
para
echo ‘guid.'” selected=”true”>’.$audio[]= $file->post_title.”;
linha 26:
———–
echo ‘guid.'”>’.$audio[]= $file->guid.”;
para
echo ‘guid.'”>’.$audio[]= $file->post_title.”;
Oi Kevin,
Muito obrigado pela sua ajuda!
Anne
Sem problemas, Anne, aproveite os trechos do WordPress.
bem, boas dicas. Existe algum site de exemplo que já usou seu script com sucesso?
É difícil saber porque muitas pessoas gostam deste trecho, mas como é um trecho de administrador, é difícil dizer.
Olá Kevin, tenho um pedido que também pode se relacionar com este artigo. Espero que você possa dar uma olhada e considerar se poderia publicar um artigo sobre ele.
Meus usuários usam campos personalizados para anexar arquivos como pdf, word, etc. aos seus posts. Seria maravilhoso se eu pudesse facilitar um pouco para os leitores entenderem que este é um arquivo em vez de um link para outros sites, adicionando um ícone à esquerda do título do arquivo automaticamente.
Por exemplo, um usuário carrega um arquivo pdf e abaixo do conteúdo (front-end) há o título do arquivo e um ícone de pdf ao lado do título. Eu geralmente uso o plugin Custom Field Template.
Agradeço sua preocupação.
Oi Zeb, você pode fazer esse tipo de coisa com javascript,
http://cool-javascripts.com/jquery/add-icons-to-your-links-automatically-using-jquery-css.html
Funciona muito bem. no entanto, vou verificar uma versão atualizada deste trecho também.
Obrigado pela resposta, Kevin.
Como você já afirmou, ele precisa de uma atualização. Ele usa jQuery 1.2.6, que está desatualizado e não tenho certeza se é otimizado para o WordPress e se há problemas de segurança. Seria muita gentileza sua se você pudesse publicar uma atualização para isso.
Saudações
Oi Zeb,
Postarei uma atualização em breve, no entanto, ele não usa jQuery, então isso não deve ser um problema.