DO_SHORT代码不适用于嵌入

时间:2011-07-09 作者:Jordash

我正在尝试使用自定义字段类型以更有序的方式嵌入Youtube视频,使用Do_Shortcode()似乎可以完美地工作,但是:

<?php echo do_shortcode(\'[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]\'); ?>
但在同一单曲中似乎不起作用。php文件这确实非常有效:

<?php echo do_shortcode(\'[gallery link="file" size="thumbnail" icontag="div"]\'); ?>
我把它们一个接一个地放出来测试,你知道为什么[嵌入]短代码没有被解析吗(它什么都没有显示)

如果我直接在帖子中嵌入短代码,效果会很好。

谢谢

约旦

3 个回复
SO网友:Rarst

简单地说[embed] 不是常规的短代码。大多数时候它什么都不做。发布内容通过后会发生什么情况the_content 筛选器如下所示:

  1. [emded] 当前注册为不执行任何操作(__return_false() )

  2. WP_Embed->run_shortcode() 过滤器以低8 优先事项

    禁用所有短代码[embed] 已注册到WP_Embed->shortocde()

  3. do_shortcode() 对内容执行(仅执行嵌入,因为rest已禁用)
  4. 短代码将恢复到原始状态,[embed] 又变得无用了

    global $wp_embed;
    
    echo $wp_embed->run_shortcode(\'[embed]whatever[/embed]\');
    
    但请注意,还涉及到缓存(嵌入结果保存到post的自定义字段,否则每次都需要发出HTTP请求),并且您可能会破坏这一点,除非您是在循环内进行此操作,并且接近其正常工作的位置。也许甚至在那时。

SO网友:Wyck

您的代码应该可以工作,这可能是一个trac票证的想法。

同时,您可以尝试:

global $wp_embed;
$post_embed = $wp_embed->run_shortcode(\'[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]\');
echo $post_embed;

SO网友:Jung Rozal
   $video_url = get_post_meta($post_id, \'video_url\',true);
    //or
    $video_url .= \'video url\';
    $check_embeds=$GLOBALS[\'wp_embed\']->run_shortcode( \'[embed]\'. $video_url .\'[/embed]\' );
    echo $check_embeds;
结束

相关推荐

Embed phpBB within Wordpress?

使用Wordpress v3。1.1设置新CMS<BBPress并不令人满意,因此我选择使用phpBB作为论坛平台。我有wordpress bones laid out, 也确定了大胆的主题(Site5).<我想为论坛保留这个主题,所以我需要了解如何在Wordpress中嵌入phpBB论坛。How do you embed a phpBB forum within a Wordpress theme?<我听说了WP United的好消息,但他们的网站现在已经关闭了超过三分之一,作者也没有