#wordpress #iframe #shortcode
#wordpress #iframe #короткий код
Вопрос:
я пытаюсь использовать короткий код для отслеживания в URL-адресах 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 =[отслеживание] (неверно — отсутствует значение ‘test’)
Ответ №1:
Это потому, что вы поступаете неправильно.
После регистрации вашего короткого кода вы должны использовать do_shortcode
функцию для отображения этого короткого кода в качестве выходных данных.
Если вы используете свой iframe или текст привязки как обычный html, попробуйте сделать так.
<iframe src="http://example.com/iframe/?tracking=<?php echo do_shortcode( '[bradford]' ); ?>"></iframe>
И я не уверен, почему текст привязки отображает правильный вывод. Это странно.
В любом случае, если вы использовали do_shortcode
для вывода своего короткого кода, он будет работать везде.
Смотрите Здесь для получения дополнительной информации do_shortcode
Обновлено
Я вижу, вы пробовали свой шорткод таким образом wp_editor
. в любом случае, я не думаю, что это сработает. но вы можете видеть, что он работает с привязкой к ссылке, но не в iframe, на самом деле iframe всегда особый случай, некоторые WordPress не могут справиться с этим в iframe.
После некоторых исследований я пришел к решению для этого, на самом деле, если вы откроете wp-includes/kses.php затем вы найдете несколько подсказок по этому поводу. WordPress по умолчанию не разрешает iframe в kse разрешить список HTML. и, возможно, именно поэтому он не работает должным образом, но текст привязки разрешен в этом списке, поэтому он работает отлично.
Итак, вы должны разрешить iframe с помощью wp_kses_allowed_html()
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;
}
Теперь вы можете увидеть другое.
Надеюсь, это вам поможет.
Комментарии:
1. Я использую этот короткий код в классическом редакторе контента WordPress (имхо, вы не можете использовать теги PHP здесь).
2. @bohusnov Я обновляю свой ответ, пожалуйста, попробуйте и дайте мне знать. Знаете, это действительно интересно, я думаю, что это ошибка WordPress (я не совсем уверен в этом).
3. Если вы используете шорткод в редакторе, невозможно добавить php для его разбора вручную — нам нужно другое / общее решение для этого.