请注意,Facebook是WordPress核心中注册的oEmbed提供商。
例如,您可以使用pre_oembed_result
在发出HTTP请求之前进行筛选,以取消它并根据需要覆盖它。
以下是Facebook帖子的一个示例:
add_filter( \'pre_oembed_result\', function ( $result, $url, $args )
{
// override the HTML result for Facebook posts, that will be saved into postmeta table
if( preg_match( \'#https?://www\\.facebook\\.com/.*/posts/.*#i\', $url ) )
$result = sprintf(
\'<div class="fb-post" data-href="%s">%s</div>\',
esc_url( $url ),
esc_url( $url )
);
return $result;
}, 10, 3 );
当您将Facebook帖子url粘贴到帖子内容编辑器中时,它还会显示修改后的oEmbed结果以及我们的代码片段。
oEmbed结果为cached 默认情况下,在Posteta表中DAY_IN_SECONDS
(24小时)。
我们可以玩oembed_ttl
过滤器,如here, 但与此同时,我们还可以使用embed_oembed_html
滤器
下面是一个示例:
add_filter( \'embed_oembed_html\', function( $cache, $url, $attr, $post_id )
{
// override the cached HTML result for Facebook posts
if( preg_match( \'#https?://www\\.facebook\\.com/.*/posts/.*#i\', $url ) )
$cache = sprintf(
\'<div class="fb-post" data-href="%s">%s</div>\',
esc_url( $url ),
esc_url( $url )
);
return $cache;
}, 10, 4 );