我正在创建一个Wordpress博客主题,并开始为每个帖子格式创建单独的文件。在这样做的过程中,我遇到了音频格式功能的问题。我想有任何音频文件的用户上传作为一个特色音频,将显示和播放的标题上的帖子。
我已经在某种程度上解决了这个问题,在同一个循环中使用了两次\\u内容,并在第一个“the\\u content”中删除了除音频播放器之外的所有内容。
因此,我的布局基础如下所示:
the_post_thumbnail();
the_content(); (this I have given a class and display: none; for everything but the audio player)
the_title();
the_excerpt();
the_content();
然而,这并不能很好地工作,因为在某些情况下,布局会中断,帖子中的文本取决于我何时在页面上嵌入音频。我想找到一个更正确的解决方案,而不是在我的代码中都是犹太人。
感谢所有提供的帮助:)Michael
EDIT
此代码创建了一个下拉列表,其中列出了上载的所有音频媒体文件:
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];
}
这是我当前音频格式模板中试图获取音频url并将其显示在内置音频短代码中的部分:
<header class="entry-header">
<div class="soundcloud-player">
<?php the_post_thumbnail(); ?>
<?php $audio_url = get_post_meta($post->ID, \'$key\', true); //this is getting your custom field url ?>
<?php $attr = array(
\'src\' => $audio_url,
\'loop\' => \'\',
\'autoplay\' => \'\',
\'preload\' => \'none\'
);
echo wp_audio_shortcode( $attr ); ?>
<?php do_shortcode(\'[audio URL=". $audio_url ."]\') ?>
</div>
</header><!-- .entry-header -->
最合适的回答,由SO网友:RachieVee 整理而成
因此,我查看了您的更新代码,它看起来像您正在编写的代码:
$audio_url = get_post_meta($post->ID, \'$key\', true); //this is getting your custom field url
您忘了将“$key”替换为您要查找的元的实际字符串名称,从函数来看,该名称称为“link”。所以我编辑了它:
$audio_url = get_post_meta($post->ID, \'link\', true); //this is getting your custom field url
球员出现了,没问题。
您可能还想编辑您的功能,以便它要么作为默认值抓取下拉列表中的第一个文件,要么不查找$link=$custom[“link”][0];值,直到用户选择了某个内容,因为在一篇尚未选择文件的帖子上,我会在你的元框上看到一个“未定义索引:链接”的通知。
如果你能让它工作起来,请告诉我,但到目前为止,它看起来不错。:-)