提问者:小点点

WordPress在短代码中解析短代码


我有一个短代码(outputURL),用于将值输出到URL中。该值从短代码(valueURL)中检索。valueURL输出是文本包装在div中:

<div class="">textForURL</div>

我只需要textForURL值,不包括div标记。到目前为止,我只能输出div标记和文本,而不能输出纯文本的干净版本。

这是我的简码函数:

function ouputURL(){

$content = '[valueURL id="5"]';
$clean = preg_replace("#<div.*?>.*?</div>#", "", $content);
echo do_shortcode( $clean );
}

add_shortcode('output', 'ouputURL');

我进行了研究,并能够将其整合在一起,但我不确定我是否朝着正确执行的方向前进。任何能帮助我实现目标的人都将不胜感激。

编辑:

这是为了进一步澄清我的问题。

>

  • 我正在使用一个WordPress插件,它管理帖子中所有嵌入的视频网址;

    作为一个功能,插件允许通过它的管理页面添加一个视频id(即vid=X23dw34),该页面在查看主视频之前在播放列表中查看;

    我想使用一个广告旋转器插件来管理多个视频id,并根据广告服务参数提供单个视频id,并通过一个短代码(即[valueURL id=“5”])调用;

    广告旋转器插件在视频id周围包装一个DIV:

    <代码>

    "...video.com/embed/

    “…video.com/embed/X23dw34…”

    我不确定我对短代码和解析的有限理解是问题所在,还是我的最终目标不能通过一个简单的函数来处理。

    如果您需要更多信息,请告诉我。

    编辑2:

    这是整个iframe,为了正确格式化,我删除了额外的选项卡:

    <代码>


  • 共1个答案

    匿名用户

    我不完全理解,但希望这能让你走上正轨:

    add_shortcode('output', 'ouputURL');
    function ouputURL ( $atts ) {
        if(!isset($atts['id']))
            return;
        $valueURL = do_shortcode("[valueURL id={$atts['id']}]");
        preg_match("#<div.*?>(.*?)</div>#", $valueURL, $matches);
        if(!isset($matches[1]))
            return;
        return $matches[1]; // the ID
    }
    

    因此,如果您将[output id=5]放在帖子/页面的内容中,它将检索[valueURL id=5]的结果,找到div标记的内容并返回打印在页面上。

    您可以修改它以返回不仅仅是ID的东西。