3

首先,我正在使用这个插件

http://wordpress.org/extend/plugins/my-youtube-playlist/ 和这个主题,www.press75.com/themes/on-demand/this-is-a-sample-video-post-4/

我的意图是将 youtube 播放列表显示在主题的灰色区域中,目前仅显示 1 个视频。我的意图是使用主题的 Youtube 代码嵌入字段作为我可以放置插件短代码的地方,因此让插件创建帖子所需的播放列表。但是,一旦它没有放在帖子的内容区域中,我就无法让插件执行短代码。

一旦发布视频链接或在主题的相关字段中输入视频嵌入代码,主题就会创建一个视频容器 Div(视频的灰色区域)。

我试过以下

  • 将其硬编码[myyoutubeplaylist LO3n67BQvh0, WGOohBytKTU, iwY5o2fsG7Y, PyKNxUThW4E, 1cX4t5-YpHQ, SJ183htYl-8, eWwoHPrrJYY, bja2ttzGOFM]到单个 post php 文件中,以查看插件是否会选择它。没运气。它只是将简码输出到屏幕上

  • 硬编码<?php echo do_shortcode('[myyoutubeplaylist LO3n67BQvh0, WGOohBytKTU, iwY5o2fsG7Y, PyKNxUThW4E, 1cX4t5-YpHQ, SJ183htYl-8, eWwoHPrrJYY, bja2ttzGOFM]'); ?>,看看它是否会捡起它。没运气。它只是将简码输出到屏幕上。

  • 让模板将短代码参数转储到以下内容中:
    <?php echo do_shortcode( get_video($post->ID); ?>. 没运气。它只是将简码输出到屏幕

  • 在主题创建的视频容器 div 之外重复上述所有操作

我刚出主意,所以任何和所有的帮助都将不胜感激

4

5 回答 5

1

把它放在你的functions.php文件中:

add_filter('widget_text', 'do_shortcode');

然后像在主要内容区域中一样使用侧边栏中的简码。

于 2010-12-16T17:06:07.923 回答
0

或试试这个 - TubePress

您可以通过多种方式将其编码到您的主题中,并且您可以使用 CSS 轻松编辑它的外观...

编辑:如何在帖子/页面之外嵌入tubepress短代码(在我看来,其中一些是专业版附带的)

于 2010-12-16T14:51:15.987 回答
0

我知道这个问题现在已经相当老了,但是由于没有一个答案已经解决了它,我会看到提供一些关于它的见解。

如果您尝试将短代码从您的内容放置到主题中的另一个区域,您需要注册一个过滤器并将调用添加到您希望运行短代码的位置。假设我们想要一个与您在问题中尝试做的功能相似的简码 - 但我将为任何感兴趣的人从一开始就开始它。

我们将首先注册一个新的短代码以从直接的 YouTube 链接(例如https://www.youtube.com/watch?v=eh7lp9umG2I )输出视频,这样用户就不必手动进行任何解析(我们真的只需要最后一个参数)。

在此之后,我们需要注册一个过滤器。在这种情况下,因为我们想将此视频从内容中取出并将其放在其他地方,我们将对“the_content”应用过滤器。

接下来,我们将创建一个函数,以确保在过滤器删除它之前获取短代码的副本 - 只是保持一切干燥。

最后我们只需要输出视频。

function your_shortcode_handler($atts)
{
    $url = $atts['video'];

    if (isset($url))
    {
        $type = 'application/x-shockwave-flash';
        $url  = str_replace("watch?v=", 'v/', $url);

        $obj  = "<object data='$url' type='$type'><param name='src' value='$url' /></object>"

        return $obj;
    }
}

add_shortcode('your_shortcode_name', 'your_shortcode_handler');

function your_shortcode_filter($content)
{
    $pattern = "/\[your_shortcode_name(.*?)\]/";

    $content = preg_replace($pattern, '', $content);

    return $content;
}

add_filter('the_content', 'your_shortcode_filter');

function stealFromContent($content)
{
    $pattern = "/\[your_shortcode_name(.*?)\]/";
    $match = null;

    preg_match($pattern, $content, $match);

    if (is_array($match) and $match[0] != '')
    {
        return $match[0];
    }

    return '';
}

//somewhere in the template you're wanting to add the video to
//BEFORE the_content is called.
$youtube_video = stealFromContent();

//then

echo $youtube_video; //wherever you want it.

现在回答作者的问题。编写此插件的个人选择类型未使用简码。他正在对 the_content 进行正则表达式,类似于我在上面所做的,然后将这些值传递给 javascript 库。

当 do_shortcode 被调用时,它会解析所有的简码并忽略非简码值。一个很好的提示是,您提供的简码根本不是简码 - [word space word space] 无效。

源文件供参考。

于 2014-02-28T08:08:50.690 回答
-1
<?php echo myYoutubePlaylist('[myyoutubeplaylist WnY59mDJ1gg, bKwQ_zeRwEs]'); ?>
于 2012-04-12T10:17:41.137 回答
-1

你为什么不试试这个插件?

http://wordpress.org/extend/plugins/smart-youtube/

于 2010-12-16T05:08:09.370 回答