将自动嵌入与GET_POST()一起使用

时间:2014-03-01 作者:Patrick

我在WordPress目录外有一个PHP脚本,我正在那里获取一篇特定帖子的内容,现在正尝试应用oembed 在其上筛选:

include(\'../wp-load.php\');
$thePost = get_post(42, ARRAY_A);
$theContent = $thePost[\'post_content\'];
该帖子的内容包含文本和一个或多个指向YouTube(或类似页面)的URL。显然,WordPress能够发现这些URL并将其重写为嵌入,但我不知道如何在我的代码段上应用这种行为。

我知道有wp_oembed_get, 但该功能不能进行自动发现。

你知道如何做到这一点吗?

2 个回复
最合适的回答,由SO网友:Seamus Leahy 整理而成

您需要设置全局$post 反对你的帖子。这是由主题中的循环函数完成的,这就是它在那里工作的原因。

WP的oEmbed在the_content 滤器但它通过两种方式替换URL。第一种是对某些URL(如Google视频)进行简单的regex查找和替换,或者直接链接到具有视频格式扩展名的文件。

oEmbed处理它的第二种方式是处理大多数服务(如YouTube)的方式。第二种方法与第一种方法类似,只是结果存储在postmeta 这就是为什么我们需要设置$post. 第二种方法是询问各种服务处理程序URL是否是他们的。如果URL是他们的,他们将生成嵌入的HTML。然后oEmbed将URL的HTML缓存到postmeta 桌子这是因为服务可能需要远程API调用才能获取HTML代码,我们希望每次显示帖子时都能将此开销降至最低。

include(\'../wp-load.php\');
$thePost = get_post(42);

// Set our post to the globally used $post object as oEmbed will use it to do a meta value lookup
global $post; 
$post = $thePost;

echo apply_filters(\'the_content\', $thePost->post_content );

SO网友:s_ha_dum

“自动嵌入”,至少是我上次检查过的,由于在the_content. 您的代码不应用该筛选器。

$thePost = get_post(42, ARRAY_A);
$theContent = $thePost[\'post_content\'];
echo apply_filters(\'the_content\',$theContent);
假设WordPress内核加载正确,那么嵌入应该可以正常工作。

结束

相关推荐

OEMBED似乎已经停止工作

我已经从3.0升级到3.1,oembed工作正常。在将视频url直接粘贴到编辑器中时,我突然失去了嵌入功能。我的嵌入设置在“媒体”下选择。你知道会发生什么吗?我已经改变了主题,最终改为原生2010,但仍然没有任何功能。我曾尝试在管理中打开和关闭嵌入设置,但没有成功。