我有一个短代码(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 =&#34; 5&#34;]);
广告旋转器插件围绕视频ID包装DIV:
<div class="">X23dw34</div>
"...video.com/embed/<div class="">X23dw34</div>..."
"...video.com/embed/X23dw34..."
我不确定我对短代码和解析的有限理解是否是问题,或者我的最终目标是否无法用简单的函数处理。
如果您需要更多信息,请与我们联系。
编辑2:
以下是整个iframe,我删除了额外的标签,以便正确格式化:
<iframe width="100%" height="459" src="http://www.youtube.com/embed/oiE5qs8opqo?rel=0&autoplay=0&showinfo=0&controls=0&cc_load_policy=0&modestbranding=1&iv_load_policy=3&wmode=transparent&version=3&autohide=1" frameborder="0" allowfullscreen="true" allownetworking="internal"></iframe>
答案 0 :(得分:0)
我并不完全明白,但这应该会让你走上正轨:
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之外的其他内容。