Use o Auto Embed com get_post ()

Eu tenho script PHP fora do diretório do WordPress onde eu estou obtendo o conteúdo de uma publicação específica e agora tentando aplicar o filtro oembed nele:

 include('../wp-load.php'); $thePost = get_post(42, ARRAY_A); $theContent = $thePost['post_content']; 

O conteúdo da publicação contém texto e um ou mais URLs para o YouTube (ou páginas semelhantes). Obviamente, o WordPress é capaz de descobrir esses URLs e reescrevê-los para incorporar, mas não tenho idéia de como aplicar esse comportamento no meu fragment de código.

Eu sei que há wp_oembed_get , mas essa function não faz a descoberta automática.

Alguma idéia de como conseguir isso?

Solutions Collecting From Web of "Use o Auto Embed com get_post ()"

Você precisa definir o object $post global para sua postagem. Isso é feito pelas funções de loop em seu tema, e é por isso que funciona lá.

WP’s OEmbed substitui os URLs durante o the_content . Mas substitui os URLs por dois meios. O primeiro é um simples regex encontrar e replace para determinados URLs, como o Google Video ou vincular diretamente a um arquivo com uma extensão de formato de vídeo.

A segunda maneira oEmbed lida é a maneira como a maioria dos serviços (como o YouTube) são gerenciados. O segundo caminho é semelhante ao primeiro, exceto que os resultados são armazenados na tabela postmetapostmeta e é por isso que precisamos configurar o $post . No segundo caminho, os vários manipuladores de serviços são perguntados se um URL for dele. Se o URL for dele, eles gerarão o HTML para o embutimento. Então oEmbed armazena em cache o HTML para o URL na tabela postmetapostmeta . A razão para isso é porque um serviço pode exigir uma chamada de API remota para obter o código HTML, e gostaríamos de minimizar essa sobrecarga sempre que a publicação for exibida.

 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 ); 

“autoembedding”, pelo menos a última vez que verifiquei, opera devido a um filtro no the_content . Seu código não aplica esse filtro.

 $thePost = get_post(42, ARRAY_A); $theContent = $thePost['post_content']; echo apply_filters('the_content',$theContent); 

Supondo que o WordPress Core esteja sendo carregado corretamente, isso deve fazer com que o embedded funcione.