我创建了一个名为sermons的自定义帖子类型,并为此帖子类型添加了一个元框,为每个帖子插入一个MP3网址。 MP3 URL在我的布道页面模板上工作/显示正常,但是当我在我的函数文件中为Recent Sermons创建短代码时,播放器不会出现。所有其他元素都出现在循环中(标题,特色图像,日期),但没有音频播放器。
add_shortcode( 'recent_sermons', 'recent_sermons' );
function recent_sermons( $atts ) {
ob_start();
// define attributes and their defaults
extract( shortcode_atts( array (
'posts' => 8,
), $atts ) );
// define query parameters based on attributes
$options = array(
'posts_per_page' => $posts,
'post_type' => 'sermons',
);
$query = new WP_Query( $options );
// run the loop based on the query
if ( $query->have_posts() ) { ?>
<div class="my-sermon-loop">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="sermon rec-post-wrap">
<div class="sermon-post">
<div class="float-lft">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('%s', 'everypraise'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2>
<div class="loop-post-meta">
<ul>
<li class="date"><?php the_time(__('F jS, Y', 'everypraise')) ?></li>
</ul>
</div>
</div>
<div class="float-rt"> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('%s', 'everypraise'), the_title_attribute('echo=0')); ?>"><?php the_post_thumbnail( 'sermons-thumb' ); ?></a> </div>
<div class="cleared"></div>
<div class="sermon-audio">
<?php echo apply_filters('the_content', get_post_meta($post->ID, 'wpshed_textfield', true)); ?>
</div>
</div>
</div>
<?php endwhile;
wp_reset_postdata(); ?>
</div>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
答案 0 :(得分:0)
以下内容适用于输出缓冲区(ob_*
函数)。 global $post
仅用于测试,在您的代码中已在循环中定义。
add_shortcode( 'test-wp-embed', function( $atts, $content )
{
global $post, $wp_embed;
ob_start();
$mp3 = get_post_meta( $post->ID, 'wpshed_textfield', true );
echo do_shortcode( $wp_embed->autoembed( $mp3 ) );
$myvariable = ob_get_clean();
return $myvariable;
});
但我建议您更改代码以使用get_posts
instead of WP_Query
。在这种情况下,没有输出缓冲,这有效:
add_shortcode( 'test-wp-oembed', function( $atts, $content )
{
global $post;
$mp3 = apply_filters( 'the_content', get_post_meta($post->ID, 'wpshed_textfield', true ) );
return $mp3;
});