我有一个短代码(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,为了正确格式化,我删除了额外的选项卡:
<代码>
我不完全理解,但希望这能让你走上正轨:
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的东西。