Wordpress шорткод не генерирует разметку должным образом - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь использовать шорткод для создания выпадающих «вкладок» для моего контента, но я не могу заставить разметку правильно отобразить. Я пытаюсь получить это:

<div class="tab">
  <h2 class="reytab">Title</h2>
  <div class="tab-content">...content appears here...</div>
</div>

Но с использованием приведенного ниже шорткода содержимое возвращается после того, как все остальное в шорткоде было проанализировано вместо <div class="tab-content"></div>:

Сокращенный

function reytab($atts, $content = null) {
       extract(shortcode_atts(array('title' => '#'), $atts));
       return '<div class="tab"><h2 class="reytab">' . $title . '</h2><div class="tab-content">' . do_shortcode($content) . '</div></div><!-- End div.tab -->';

}
add_shortcode('reytab', 'reytab');

Разметка, созданная из шорткода

<div class="tab">
  <h2 class="reytab">Title</h2>
  <div class="tab-content"></div>
</div>
...content appears here...[\reytab]

Тот факт, что [\reytab] появляется в конце, подсказывает мне, что что-то мешает шорткоду полностью выполнить, когда он достигает $content.

Кто-нибудь может увидеть проблему?

Спасибо

Ос

1 Ответ

0 голосов
/ 29 февраля 2012

Не видя, что вы переходите на шорткод, трудно сказать .. Вы просматривали вложенные шорткоды и ограничения? DOCS

вы используете шорткоды, вложенные друг в друга? то есть:

[reytab title='Tabs Title']this is my gallery [gallery id=3][/reytab]

выглядит хорошо для меня. только что протестирован в моем блоге и работает, используя как встроенный текст, так и короткий код для галереи

function reytab_shortcode($atts, $content = null) {
       extract(shortcode_atts(array('title' => '#'), $atts));
       $myShotcode = '<div class="tab">';
       $myShotcode.= '<h2 class="reytab">'.$title.'</h2>';
       $myShotcode.= '<div class="tab-content">'.do_shortcode($content).'</div>';
       $myShotcode.= '</div>';
       return $myShotcode;
}
add_shortcode('reytab', 'reytab_shortcode');

тогда в своем посте и на страницах вы могли бы написать что-то вроде.

[reytab title='Tabs Title']
this is my gallery [whichevershortcodeyouwant]
[/reytab]

надеюсь, это должно быть в порядке.

Marty

RE-EDIT

function reytab_shortcode($atts, $content=null) {
    extract(shortcode_atts(array('title' => '#'), $atts));
    $myShotcode = '<div class="tab">';
    $myShotcode.= '<h2 class="reytab">'.$title.'</h2>';
    $myShotcode.= '<div class="tab-content">'.do_shortcode($content).'</div>';
    $myShotcode.= '</div>';
    return $myShotcode;
}
...