iframe 中的简码 url
Shortcode in iframe url
我试图在 iframe 和 links url 中使用短代码进行跟踪,但 iframe 忽略了短代码。有人可以帮我吗?谢谢!
我有这样的简码功能:
function myShortcode(){
return 'test';
}
add_shortcode( 'tracking', 'myShortcode' );
如果我把 link 放到这样的内容中:
<a href="http://example.com/?tracking=[tracking]">Tracking link</a>
it returns link 跟踪信息如下:http://example.com/?tracking=test(正确)
但是当我像这样在 iframe 中使用它时
<iframe src="http://example.com/iframe/?tracking=[tracking]"></iframe>
它 return link 里面是这样的:http://example.com/iframe/?tracking=[tracking](不正确 - 缺少 'test' 值)
那是因为你做错了
注册您的简码后,您必须使用 do_shortcode
函数将该简码显示为输出。
如果您将 iframe 或锚文本用作纯文本 html,请尝试这样。
<iframe src="http://example.com/iframe/?tracking=<?php echo do_shortcode( '[bradford]' ); ?>"></iframe>
而且我不确定为什么锚文本显示正确的输出。那真是怪了。
无论如何,如果您使用 do_shortcode
输出您的短代码,那么它将在任何地方都有效。
查看此处了解更多信息do_shortcode
已更新
我看到你在 wp_editor
上用这种方式尝试了你的简码。无论如何,我不会这样做。但是你可以看到它在锚点上工作 link 而不是在 iframe 上,实际上 iframe 总是特殊情况,WordPress 无法在 iframe 上处理这个。
经过一些研究我找到了解决方案,实际上如果你打开 wp-includes/kses.php 然后你会发现一些关于它的提示。 WordPress 默认不允许 kses 允许 HTML 列表中的 iframe。也许这就是它无法正常工作的原因,但该列表中允许使用锚文本,这就是它可以完美工作的原因。
因此您必须使用 wp_kses_allowed_html()
允许 iframe
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 和 links url 中使用短代码进行跟踪,但 iframe 忽略了短代码。有人可以帮我吗?谢谢!
我有这样的简码功能:
function myShortcode(){
return 'test';
}
add_shortcode( 'tracking', 'myShortcode' );
如果我把 link 放到这样的内容中:
<a href="http://example.com/?tracking=[tracking]">Tracking link</a>
it returns link 跟踪信息如下:http://example.com/?tracking=test(正确)
但是当我像这样在 iframe 中使用它时
<iframe src="http://example.com/iframe/?tracking=[tracking]"></iframe>
它 return link 里面是这样的:http://example.com/iframe/?tracking=[tracking](不正确 - 缺少 'test' 值)
那是因为你做错了
注册您的简码后,您必须使用 do_shortcode
函数将该简码显示为输出。
如果您将 iframe 或锚文本用作纯文本 html,请尝试这样。
<iframe src="http://example.com/iframe/?tracking=<?php echo do_shortcode( '[bradford]' ); ?>"></iframe>
而且我不确定为什么锚文本显示正确的输出。那真是怪了。
无论如何,如果您使用 do_shortcode
输出您的短代码,那么它将在任何地方都有效。
查看此处了解更多信息do_shortcode
已更新
我看到你在 wp_editor
上用这种方式尝试了你的简码。无论如何,我不会这样做。但是你可以看到它在锚点上工作 link 而不是在 iframe 上,实际上 iframe 总是特殊情况,WordPress 无法在 iframe 上处理这个。
经过一些研究我找到了解决方案,实际上如果你打开 wp-includes/kses.php 然后你会发现一些关于它的提示。 WordPress 默认不允许 kses 允许 HTML 列表中的 iframe。也许这就是它无法正常工作的原因,但该列表中允许使用锚文本,这就是它可以完美工作的原因。
因此您必须使用 wp_kses_allowed_html()
允许 iframeadd_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;
}
现在你可以看到不一样了。
希望对你有帮助。