Шорткод внутри шорткода не работает в Wordpress? - PullRequest
0 голосов
/ 04 декабря 2010

Мне нужно добавить шорткоды, такие как image, hr и button.Однако мне также нужно было удалить фильтр wpautop (remove_filter('the_content','wpautop')), чтобы часы работали правильно.Теперь, чтобы вручную установить параграфы, я установил шорткод p для простого преобразования [p]text[/p] с <p>text</p>.

Но внутри [p /] другие шорткоды не работают.Я предполагаю, что это изменяет содержание.Вот моя простая функция:

function p_func($atts,$content) {
    return '<p>'.$content.'</p>';
}
add_shortcode('p','p_func');

Я немного нервничаю из-за этого, так как мой functions.php, похоже, уже полон хаков.Любой совет?

Марти Лейн

1 Ответ

3 голосов
/ 04 декабря 2010

Полагаю, вам нужно удалить wpautop для вашего hr шорткода, когда он будет заключен в абзац?

Если это так, просто используйте свой шорткод так:

Some text in my editor.

[hr]

A bit more text.

Видите интервал разрыва строки? WordPress автоматически гарантирует, что шорткод «сам по себе» не будет заключен в абзацы.

Я бы настоятельно советовал идти по маршруту, которым вы сейчас занимаетесь - если то, что я упомянул выше, не является проблемой, что означает ? Давайте посмотрим на его решение, а не на изобретение колеса!

Для записи, если вам нужно применить вложенный короткий код, с кодекс ;

Если включенный шорткод предназначен разрешить другие шорткоды в своем вывод, функция-обработчик может вызвать do_shortcode () рекурсивно:

function caption_shortcode( $atts, $content = null ) {
   return '<span class="caption">' . do_shortcode($content) . '</span>';
}
...