首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >帮助在postent内容区域外执行短代码

帮助在postent内容区域外执行短代码
EN

Stack Overflow用户
提问于 2010-12-15 22:11:59
回答 5查看 1.6K关注 0票数 3

首先,我使用了这个插件

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

我的意图是让youtube播放列表显示在主题的灰色区域,目前只有一个视频显示。我的意图是使用主题的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之外的所有上述内容。

我的想法太差了,所以所有的帮助都会很感激

EN

回答 5

Stack Overflow用户

发布于 2010-12-16 17:06:07

将其放入您的functions.php文件:

代码语言:javascript
运行
复制
add_filter('widget_text', 'do_shortcode');

然后在侧边栏中使用短代码,就像在主内容区域中一样。

票数 1
EN

Stack Overflow用户

发布于 2010-12-16 14:51:15

或者试试这个- TubePress

你可以用多种方式将它编码成你的主题,你可以很容易地用CSS编辑它的外观.

编辑:如何嵌入管压短程序外部的帖子/页面(在我看来,这其中有些是带有专业版的)

票数 0
EN

Stack Overflow用户

发布于 2014-02-28 08:08:50

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

如果您试图将内容中的短代码放置到主题中的另一个区域,则需要注册一个筛选器,并在要运行该短代码的地方添加调用。假设我们想要一个具有类似于您在问题中所要做的功能的短代码--但是我将从一开始就开始对任何感兴趣的人。

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

在此之后,我们需要注册一个过滤器。在这种情况下,由于我们想从内容中提取这个视频并将其放到其他地方,所以我们将在' the _ content‘上应用一个过滤器。

接下来,我们将创建一个函数,以确保在过滤器删除之前获取一个短代码的副本--只需保持所有内容都保持干燥即可。

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

代码语言:javascript
运行
复制
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时,它会解析所有的短代码,并忽略非短代码值。一个很好的提示是,您所提供的短代码并不是一个短代码--单词空间是无效的。

源文件供参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4455481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档