Подтвердить что ты не робот

Удалите пустые теги <p>из коротких кодов Wordpress с помощью php functon

Поиск функции php (не-jQuery или wpautop) для удаления <p></p> из Wordpress.

Я пробовал это, но он не работает:

        function cleanup_shortcode_fix($content) {   
          $array = array (
            '<p>[' => '[', 
            ']</p>' => ']', 
            ']<br />' => ']',
            ']<br>' => ']'
          );
          $content = strtr($content, $array);
            return $content;
        }
        add_filter('the_content', 'cleanup_shortcode_fix');
4b9b3361

Ответ 1

Просто вставьте этот код в свой functions.php файл:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop', 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );

Ответ 2

add_filter('the_content', 'cleanup_shortcode_fix', 10);

Я обнаружил, что он работает, если вы указали 10 как приоритет; никакое другое число не будет работать.

Ответ 3

возможно, может работать регулярное выражение:

$string=preg_replace_('/<p>\s*</p>/', '', $string);

Это должно заменить любой <p></p> ничем или просто пробелами в нем ни к чему, тем самым удаляя их.

При применении регулярного выражения к HTML-коду рекомендуется сначала удалить \r\n из HTML, так как они перестают работать с регулярным выражением.

Ответ 4

Вы должны увеличить приоритет фильтра.

Это должно работать

add_filter('the_content', 'cleanup_shortcode_fix', 1);

Ответ 5

Вы можете удалить

тег

<?php echo $post->post_content; ?>

вместо the_content()

Ответ 6

Что вам нужно, это сочетание jquery и php... это единственный рабочий путь
что я нашел работу очень хорошо. У меня есть учебник на моем сайте, но
для того, чтобы держать вещи в доме, идет

jQuery:
включить это в некоторый JS файл, который вы уже в очереди

jQuery(function($){
    $('div#removep > p').filter(function() {
        return $.trim($(this).text()) === '' && $(this).children().length == 0
    })
    .remove()
})

Сокращенный код, который вы можете использовать позже:
в файле functions.php или включенном файле

function sght_removep( $atts, $content = null ) {return '<div id="removep">'.do_shortcode($content).'</div>';}
add_shortcode('removep', 'sght_removep');

Теперь вы можете обернуть определенные вещи следующим образом:

[removep]
Some text i write directly in wordpress wysiwyg
<p></p> <-- this would get removed
[/removep]

Это решение требует некоторых ноу-хау, но оно работает!
Надеюсь, это поможет...