仅显示循环内的_content()中的视频和图像

时间:2015-08-22 作者:james

我试图解决的问题是在WordPress循环中,我只想显示视频嵌入或图像,而不是任何文本。

目前,在WordPress编辑器中创建新帖子(标准格式)时,我的大多数帖子如下所示:

http://youtube.com/somevideo

Some supporting text below the video
当然,WordPress将使用我放在YouTube或Vimeo中的任何链接创建自动嵌入的视频。

显示帖子列表时,我不希望Some supporting text below the video 要显示,仅显示视频。

当前我的content.php 页面非常基本,只使用<?php the_content(); ?>

有没有办法在每篇帖子上去掉这篇文章?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

我们可以在get_media_embedded_in_content() 功能:

/**
 * Display only the first media item in the content
 *
 * @link http://wordpress.stackexchange.com/a/199398/26350
 */
! is_admin() && add_filter( \'the_content\', function( $content )
{
    // Get the avialable media items from the content
    add_filter( \'media_embedded_in_content_allowed_types\', \'wpse_media_types\' );
    $media = get_media_embedded_in_content( $content );
    remove_filter( \'media_embedded_in_content_allowed_types\', \'wpse_media_types\' );

    // Only use the first media item if available 
    if( $media ) 
        $content = array_shift( $media );   

    return $content;
} , 99 );
在那里我们可以定义我们的自定义media types 使用:

function wpse_media_types( $types )
{
   return [ \'audio\', \'video\', \'object\', \'embed\', \'iframe\', \'img\' ];
}
下面是另一种方法,我们从内容中提取所有URL,并检查它是否是可用的oEmbed:

/**
 * Display only the first oEmbed in the content
 *
 * @link http://wordpress.stackexchange.com/a/199398/26350
 */
! is_admin() && add_filter( \'the_content\', function( $content )
{
    require_once( ABSPATH . WPINC . \'/class-oembed.php\' );
    $wp_oembed = _wp_oembed_get_object();
    $urls = wp_extract_urls( $content );
    foreach( (array) $urls as $url )
    {
        if( $wp_oembed->get_provider( $url ) )
            $content = $url;
    }
    return $content;
}, 1 );
请注意,您可能希望对使用此选项的位置添加进一步的限制

结束

相关推荐

how do i make this loop work

抱歉,我是一个PHp初学者,我不知道为什么这个循环对我的标签不起作用。php页面欢迎任何帮助。<?php get_header(); ?> <div class=\"posts\"><!-- BLOG --> <!-- Shapes on sides --> <div class=\"shapes_left\"> </div> <div class=\"shape