iframe网址中的短代码

时间:2016-10-07 08:28:04

标签: wordpress iframe shortcode

我尝试在iframe和链接网址中使用短代码进行跟踪,但iframe忽略了短代码。 some1可以帮助我吗?谢谢!
我有这样的短代码功能:

function myShortcode(){
  return 'test';
}
add_shortcode( 'tracking', 'myShortcode' );

如果我把链接放到这样的内容:

<a href="http://example.com/?tracking=[tracking]">Tracking link</a>

它会返回跟踪信息的链接,例如:http://example.com/?tracking=test(正确)

但是当我在iframe中使用它时

<iframe src="http://example.com/iframe/?tracking=[tracking]"></iframe>

它返回内部链接如下:http://example.com/iframe/?tracking=[tracking](错误 - 缺少'test'值)

1 个答案:

答案 0 :(得分:1)

这是因为你做错了。

注册短代码后,您必须使用<iframe src="http://example.com/iframe/?tracking=<?php echo do_shortcode( '[bradford]' ); ?>"></iframe> 功能将该短代码显示为输出。

如果您使用iframe或锚文本作为普通html,请尝试这样。

do_shortcode

我不确定为什么anchort文本显示正确的输出。这很奇怪。

无论如何,如果您使用wp_editor输出短代码,那么它将适用于每个地方。

有关详情do_shortcode

,请参阅此处

<强> 更新

我看到您在add_filter( 'wp_kses_allowed_html', 'wpse_allow_iframe_kses_html',1,1 ); function wpse_allow_iframe_kses_html( $allowedposttags ) { // Here add tags and attributes you want to allow $allowedposttags['iframe']=array( 'align' => true, 'width' => true, 'height' => true, 'frameborder' => true, 'name' => true, 'src' => true, 'id' => true, 'class' => true, 'style' => true, 'scrolling' => true, 'marginwidth' => true, 'marginheight' => true, 'allowfullscreen' => true, ); return $allowedposttags; } 上以这种方式尝试了您的短代码。无论如何,我不会这样做。但是你可以看到它在锚链接上工作但不在iframe上,实际上iframe总是特殊情况,一些WordPress如何在iframe上处理这个。

经过一番研究后,我为此解决了问题,实际上如果你打开wp-includes / kses.php,那么你会发现一些关于它的提示。默认情况下,WordPress不允许使用krame中的iframe允许HTML列表。也许这就是为什么它不能正常工作但是锚文本在该列表中是允许的,这就是为什么它能够完美地工作。

因此,您必须使用wp_kses_allowed_html()

来允许iframe
{{1}}

现在你可以看到不同的了。

希望它对你有所帮助。