如何使用php访问古腾堡“ core-embed / youtube”

时间:2020-07-31 16:22:03

标签: php wordpress-gutenberg gutenberg-blocks

我试图像这样从古腾堡访问php中嵌入的youtube:

if ( $blocks[$i]['blockName'] === 'core-embed/youtube' ) {

php echo $blocks[$i]['innerHTML'];
}

这是我得到的:

<figure class="wp-block-embed-youtube ...">
  <div class="wp-block-embed__wrapper">
    https://www.youtube.com/watch?v=Qm-fZNp5nCc
  </div>
  <figcaption>Dies ist ein Video</figcaption>
</figure>

我期望的是完整的嵌入式视频,或者至少只是链接。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我确实遇到了同样的问题,在寻找解决方案数小时后,我尝试了此方法,它仍然有效……只是过滤未呈现的url属性:

$output = '';
$blocks = parse_blocks( $content );
foreach ( $blocks as $block ) {
$output .= render_block( $block );
    if( "core-embed/youtube" === $block['blockName'] ) {
$not_embedded =  $block['attrs']['url'];
$output = str_replace( $not_embedded, wp_oembed_get($not_embedded), $output );
    }
}
echo $output;

答案 1 :(得分:0)

如果要遍历所有嵌入式模块,只需寻找

//look if "core-embed" is part of the blockName
if ( strstr( $lookfor_embedded, 'core-embed' ) ) {
    $not_embedded =  $block['attrs']['url'];
    $output = str_replace( $not_embedded, wp_oembed_get($not_embedded), $output );
}

这适用于vimeo和youtube,但不适用于tiktok(它输出不同的内容)