Cześć chłopaki, chcę po prostu zapobiec tworzeniu pustych akapitów w moim poście z wordpress. Zdarza się to dość często podczas ręcznego umieszczania zawartości w przestrzeni.
Nie wiem, dlaczego to nie działa?
/*Remove empty paragraph tags from the_content*/
function removeEmptyParagraphs($content) {
/*$pattern = "/<p[^>]*><\\/p[^>]*>/";
$content = preg_replace($pattern, '', $content);*/
$content = str_replace("<p></p>","",$content);
return $content;
}
add_filter('the_content', 'removeEmptyParagraphs');
edycja / aktualizacja:
wygląda na to, że problem jest następujący:
function qanda($content) {
// filters for [q=some question] and [a=some answer]
// wraps it inside of <div class="qanda"><div class="question"> </div><div class="answer"> </div></div>
$content = preg_replace('/\[q=(.+?)].+?\[a=(.+?)]/is', '<div class="qanda"><div class="question">$1</div><div class="answer">$2</div></div>', $content);
return $content;
}
add_filter('the_content', 'qanda');
Zrobiłem tę funkcję sam, aby filtrować w poszukiwaniu rodzaju kodu shortcode w moich postach i stronach. Mimo że w moim backendie post został całkowicie wykonany bez akapitów i niepotrzebnych odstępów, wynik wygląda następująco:
<div class="entry">
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
</div>
jakiś pomysł, skąd pochodzą te puste p?
wpautop
to zrobi, np.add_filter('the_content', 'qanda', 7 );
..Odpowiedzi:
WordPress automatycznie wstawi
<p>
i doda</p>
tagi oddzielające podziały treści w postie lub na stronie. Jeśli z jakiegoś powodu chcesz lub musisz je usunąć, możesz użyć jednego z następujących fragmentów kodu.Aby całkowicie wyłączyć filtr wpautop, możesz użyć:
Jeśli nadal chcesz, aby to działało, spróbuj dodać później wartość priorytetu do swojego filtra, na przykład:
źródło
Miałem ten sam problem, co ty. Właśnie zrobiłem ... powiedzmy ... niezbyt piękne rozwiązanie, ale działa i jak dotąd jest to jedyne rozwiązanie, jakie mam. Dodałem małą linię JavaScript. Potrzebuje jQuery, ale jestem pewien, że możesz to rozwiązać bez.
Oto mój mały JS:
To działa dla mnie!
źródło
p:empty { display:none; }
<p></p>
ale nie działa<p>\n</p>
.Wiem, że jest to już oznaczone jako „rozwiązane”, ale tylko dla odniesienia, oto funkcja, która robi dokładnie to, co chcesz, bez konieczności dodawania znaczników do postów. Po prostu umieść to w funkcjach swojego motywu. Php:
To z tej treści: https://gist.github.com/1668216
źródło
force_balance_tags
gdy napotyka on<
postać w określonych sytuacjach. Zobacz bilet [ 9270 ] ( core.trac.wordpress.org/ticket/9270 ), aby uzyskać szczegółowe informacje.Po prostu użyj CSS
źródło
wewnątrz znacznika <p> nie będzie to działać.Możesz po prostu uruchomić filtr, zanim te paskudne
wpautop
zahaczenia i bałagan ze znacznikami.W ten sposób przekonwertowałeś już to, czego potrzebujesz, zanim się połączy, co w niektórych przypadkach pomaga.
źródło
To samo podejście niż 2 odpowiedzi przede mną, ale zaktualizowane wyrażenie regularne, ponieważ jego nie działało dla mnie.
regex:
/<p>(?:\s| )*?<\/p>/i
(grupa nie przechwytująca szukająca dowolnej liczby białych znaków lub
s wewnątrz tagu p, wszystkie bez znaczenia.źródło
Uważam to za dziwne, ale w rzeczywistości wywołanie
the_content()
spowoduje wstawienie akapitów w opisany sposób. Jeśli chcesz kod HTML, w zasadzie tak jak go wpisałeś (to samo, co „edytuj HTML” podczas edycji), użyj tego,get_the_content()
który zwraca treść bez formatowania i znaczników akapitu.Ponieważ to zwraca, upewnij się, że używasz czegoś takiego:
Zobacz także: http://codex.wordpress.org/Function_Reference/get_the_content
źródło
Spowoduje to rekurencyjne usunięcie wszystkich pustych tagów HTML z ciągu
Wzór pochodzi z http://codesnap.blogspot.in/2011/04/recursively-remove-empty-html-tags.html
źródło
Jeśli masz
<p>
w tekście tagi z białymi spacjami, przejdź do posta lub edytuj go nie w stylu wizualnym.znajdziesz
tam trochę . Usuń go, a puste<p>
tagi znikną.źródło
Aby mieć tylko zawartość HTML bez
tagi możemy użyć poniższej pętli, aby umieścić tylko HTML bez formatowania postu lub stronyźródło