我假设你正在使用WordPress\'Embeds 特色一般来说wp_embed_defaults()
为您提供所需的信息。看看source 披露您的可能性:
2017 /**
2018 * Create default array of embed parameters.
2019 *
2020 * The width defaults to the content width as specified by the theme. If the
2021 * theme does not specify a content width, then 500px is used.
2022 *
2023 * The default height is 1.5 times the width, or 1000px, whichever is smaller.
2024 *
2025 * The \'embed_defaults\' filter can be used to adjust either of these values.
2026 *
2027 * @since 2.9.0
2028 *
2029 * @return array Default embed parameters.
2030 */
2031 function wp_embed_defaults() {
2032 if ( ! empty( $GLOBALS[\'content_width\'] ) )
2033 $width = (int) $GLOBALS[\'content_width\'];
2034
2035 if ( empty( $width ) )
2036 $width = 500;
2037
2038 $height = min( ceil( $width * 1.5 ), 1000 );
2039
2040 /**
2041 * Filter the default array of embed dimensions.
2042 *
2043 * @since 2.9.0
2044 *
2045 * @param int $width Width of the embed in pixels.
2046 * @param int $height Height of the embed in pixels.
2047 */
2048 return apply_filters( \'embed_defaults\', compact( \'width\', \'height\' ) );
2049 }
正如您所看到的
global
变量
$content_width
-
$GLOBALS[\'content_width\']
- 是确定默认宽度的第一种方法,如果它不是空的,将使用它。主题功能
Content Width 可以通过将以下内容添加到
functions.php
:
if ( ! isset( $content_width ) ) {
$content_width = 1200;
}
设置所需的宽度。如果不这样做,则宽度默认为500px,如上所示。高度默认为宽度的1.5倍,如果小于,则默认为1000px。
指定的宽度是最大值,因此embed 不会比那更宽,但会缩小尺寸。您可以通过CSS使用以下参数支持此行为:
max-width: 100%;
height: auto;
这通常是一个建议,但不一定需要。
上述内容通常足以将嵌入内容缩放到其所在容器的大小。
但是,查看源显示了修改宽度(和高度)值的另一种方法。这将是hooking 进入embed_defaults
滤器有关此功能的更多一般信息,请访问WordPress codex页面Plugin API, 这是进一步了解该主题的良好开端。关于如何将这种可能性应用于embed_defaults
筛选器如下所示:
add_filter( \'embed_defaults\', \'wpse150029_change_embed_defaults\' );
function wpse150029_change_embed_defaults() {
return array(
\'width\' => 1200,
\'height\' => 800
);
}
代码将是您的
functions.php
或插件。理论上你可以使用
conditional tags 区分这些值,但不太可能需要。
这应该包括设置嵌入内容宽度的可能性。其余取决于您的templates 以及你正在使用的主题的CSS。
因为你的目标是展示the_excerpt()
以及主页、首页或概览页上的视频,您必须创建自己的功能,从帖子内容中提取视频URL并使用wp_oembed_get()
获取嵌入的HTML。例如:
function wpse150029_fetch_youtube_return_embed_html( $content ) {
// Regex example+explanation can be found here: http://regex101.com/r/vZ6bX6/3
// note: the first youtube link will be extracted
$pattern = \'/(?<=(?:\\[embed\\])|(?:\\[embed\\]\\s)|(?:))\';
$pattern .= \'(https?:\\/\\/)\';
$pattern .= \'(:?www\\.)?\';
$pattern .= \'(:?youtube\\.com\\/watch|youtu\\.be\\/)\';
$pattern .= \'([\\w\\?\\=\\&(amp;)]+)\';
$pattern .= \'(?=(?:\\[\\/embed\\])|(?:\\s\\[\\/embed\\])|(?:))\';
$pattern .= \'/ims\';
preg_match( $pattern, $content, $matches );
$url = $matches[0];
$embed_code = wp_oembed_get( $url );
return $embed_code;
}
上述代码进入
functions.php
. 模板中的示例用法如下所示:
$video_loop = new WP_Query( $args );
if ( $video_loop->have_post() ) :
while ( $video_loop->have_posts() ) : $video_loop->the_post();
the_title();
the_excerpt();
echo wpse150029_fetch_youtube_return_embed_html( $post->post_content );
endwhile;
wp_reset_postdata();
else :
endif;
有关这方面的详细描述,请查看
WP_Query
文档
如果你真的想为你的嵌入式视频制作缩略图,你应该看看这些问题和建议;A在这里: