Плагин Wordpress Shortcodes - Автоматические разрывы для контента, но не для HTML - PullRequest
0 голосов
/ 19 июня 2019

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

Проблема: Wordpress добавляет разрывы и абзацы к моему HTML-результату, что приводит к нарушению дизайна.

Я могу удалить авторазрывы, но тогда это также не работает для реального контента, у которого есть параграфы. Но я не хочу использовать p-тэги в бэкэнде.

Как я могу помешать WordPress делать авторазрывы с моим HTML, но все же делать это для моего обернутого контента?

Решение должно работать в плагине, не затрагивая другие плагины / функции.

Я могу удалить любой интервал между своими шорткодами, поэтому WordPress не добавляет разрывов. Но читать это очень некрасиво.

Так работает:

[os_accordion][os_spoiler title="Title"]Content with some

breaks.[/os_spoiler][/os_accordion]

Таким образом, это не так:

[os_accordion]
[os_spoiler title="Title"]
Content with some

breaks.
[/os_spoiler]
[/os_accordion]

Я пытался использовать функцию для удаления разрывов, но она не работает.

//Helper to remove autops
function cleanup_shortcode_fix($content) {
    $array = array('<p>[' => '[', ']</p>' => ']', ']<br />' => ']', ']<br>' => ']');
    $content = strtr($content, $array);
    return $content;
}

//Outer accordion wrapper
function function_accordion($atts, $content = null){
    $html = '<div class="accordion">'.do_shortcode($content).'</div>';
    return cleanup_shortcode_fix($html);

}
add_shortcode('os_accordion', 'function_accordion');

//Inner wraps
function function_spoiler($atts, $content = null){

    //set default attributes and values
    $values = shortcode_atts( array(
        'title'     => '',
    ), $atts );

    //Output buffer
    ob_start();
    ?>

    <div class="toggle"><?php echo esc_attr($values['title']); ?></div>
    <div class="content"><?php echo $content; ?></div>

    <?php
    return ob_get_clean(); //Close buffer and return data
}
add_shortcode('os_spoiler', 'function_spoiler');

Есть идеи, как заставить работать последнюю версию? Я застрял. : /

1 Ответ

0 голосов
/ 19 июня 2019

Это должно сделать это.Вероятно, это просто поставить p теги после всего.

remove_filter('the_content', 'wpautop');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...