另一种方法可以是这样的,在当前帖子保存时查找youtube视频中的内容,如果找到则将其保存到瞬态\'videos\'
和post\\u id(用于以后的帖子链接)代替regex im使用parse_url() 和parse_str()
add_action( \'save_post\', \'save_youtube_videos\' );
function save_youtube_videos( $post_id )
{
$saved = get_transient( \'videos\' ); // If we have videos before
$videos = !empty( $saved ) ? $saved : array();
$content = isset( $_POST[\'post_content\'] ) ? $_POST[\'post_content\'] : null;
if( $content )
{
parse_str( parse_url( $content, PHP_URL_QUERY ), $video );
if( !in_array( $video[\'v\'], $videos ) )
{
$videos[ $post_id ] = $video[\'v\']; // Push post_id and the vide_id
set_transient( \'videos\', $videos ); // Save all videos as array
}
}
}
如果您的帖子有post\\u id和youtube\\u id,请保存它们。因此,在更新或发布时,使用parse\\u str和parse\\u url查找视频,如果我们找到一个,请将其添加到临时缓存中,这样我们就不需要再次查找所有帖子。
function get_youtube_archive( $width = \'415\', $height = \'250\' )
{
$videos = get_transient( \'videos\' );
if( !empty( $videos ) && count( $videos ) > 0 )
{
$output = \'\';
foreach( $videos as $key => $value )
{
$output .= \'<object width="\'. $width .\'" height="\'. $height .\'">\';
$output .= \'<param name="movie" value="http://www.youtube.com/v/\'. $value .\'/&hl=en_US&fs=1&"></param>\';
$output .= \'<param name="allowFullScreen" value="true"></param>\';
$output .= \'<param name="allowscriptaccess" value="always"></param>\';
$output .= \'<embed src="http://www.youtube.com/v/\'. $value .\'&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="\'. $width .\'" height="\'. $height .\'"></embed>\';
$output .= \'</object>\';
$output .= \'<a href="\'. get_permalink( $key ) .\'" alt="Go to post">Go to post</a>\';
}
return $output;
}
}
和列表功能,您只需添加以下内容即可获得视频:
echo get_youtube_archive();
在你想要的地方。你必须把帖子保存在有视频的地方,这样才能起作用。