Короткий код в URL-адресе iframe

#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 для его разбора вручную — нам нужно другое / общее решение для этого.