如何将WordPress音频播放器添加为音频博客文章中的特色音频?

时间:2014-01-24 作者:turtledropbomb

我正在创建一个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 -->

3 个回复
最合适的回答,由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];值,直到用户选择了某个内容,因为在一篇尚未选择文件的帖子上,我会在你的元框上看到一个“未定义索引:链接”的通知。

如果你能让它工作起来,请告诉我,但到目前为止,它看起来不错。:-)

SO网友:Ricard

我会在编辑屏幕上添加一个元框,然后从任何我想要的地方检索值。

查看以下资源:

(1)http://codex.wordpress.org/Function_Reference/add_meta_box

(2)http://wordpress.org/plugins/meta-box/screenshots/

Does this approach works for you?

SO网友:RachieVee

好的,所以您希望能够在任何地方显示音频,而不必在默认模板中使用\\u内容-因此,音频不会与主WordPress文本编辑器中的内容纠缠在一起。

如果我假设你没有使用custom post types 要仅为音频或魔术字段创建帖子,并且只想使用主题中的内容(content.php、content-link.php、content-image.php等),我建议只使用自定义字段插入音频文件。如果您使用的是WP 3.6及以上版本,it supports audio 并将自动显示一个播放器。

为了避免必须两次使用\\u内容,并且为了更干净的代码,请创建custom field 例如,调用“音频文件”,并将其显示在\\u标题上方,如示例中所示。在该自定义字段中,将是您通过媒体库上载的文件的url。在模板中,可以使用wp_audio_shortcode. 您的代码如下所示:

the_post_thumbnail();
$audio_url = get_post_meta($post->ID, \'audio-file\', true); //this is getting your custom field url
$attr = array(
    \'src\'      => $audio_url,
    \'loop\'     => \'\',
    \'autoplay\' => \'\',
    \'preload\' => \'none\'
    );
echo wp_audio_shortcode( $attr ); //this will turn into a player
the_title();
the_excerpt();
the_content();
希望有帮助!祝你好运。:-)

结束

相关推荐

在edit.php上禁用inline_dit()

在课堂上WP_Posts_List_Table 有一个名为inline_edit() 它负责呈现在上使用(但最初隐藏)的整个快速编辑表wp-admin/edit.php. 我想prevent 该表无法呈现,因为我正在处理的站点有数千个类别术语,它们都作为带有复选框的列表项添加到此快速编辑表中。它使edit.php 巨大而缓慢的加载(在某些情况下,一些jQuery插件甚至会使一些浏览器暂停)。我没有找到任何方法,在WP_Posts_List_Table, 阻止呈现此表。也没有办法edit.php 非呼叫$w