elimină tagurile <p> din the_content
Am un format de postare de tip Imagine și mă confrunt cu o problemă în care imaginea este învelită într-un tag <p>
. Vreau să scap de acest tag (în mod specific în versiunea single.php
) pentru aceste tipuri de postări.
Cum pot să intervin în formatarea temei și să elimin tagurile <p>
, sau să creez orice format doresc pentru afișarea acestui tip de postare, fără să afectez postările cu un format diferit?

Dacă acest tip de postare se numește "image", poți crea un șablon individual pentru a gestiona afișarea doar a tipului de postare "image".
Pur și simplu copiază fișierul 'single.php' și redenumește copia în 'single-image.php'. Acum poți controla doar postările de tip imagine. Pentru a elimina tagurile, îmi place să folosesc funcția strip_tags()
. Dacă afișezi conținutul postării cu the_content()
, acesta aplică deja filtrul de conținut, înfășurând liniile în taguri <p>
.
Iată un exemplu despre cum ai putea obține conținutul imaginii tale fără taguri:
$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<br><a>'); //înlocuiește <br> și <a> cu orice taguri dorești să păstrezi după eliminare
echo $stripped;
Sper că acest lucru te ajută!

WordPress adaugă automat tag-urile <p>
în conținut. Astfel, acestea apar în timpul încărcării conținutului. Acest lucru se întâmplă cu ajutorul filtrului wpautop
. Prin urmare, vom elimina acest filtru doar pentru tipul de postare image
. Puteți gestiona acest lucru adăugând următorul cod în fișierul functions.php.
// Adaugă filtrul pentru gestionarea tag-urilor p
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );
function wti_remove_autop_for_image( $content )
{
global $post;
// Verifică dacă este o pagină single și tipul de postare este image și elimină
if ( is_single() && $post->post_type == 'image' )
remove_filter('the_content', 'wpautop');
return $content;
}
is_single()
verifică dacă este afișat un singur post.

În mod implicit, WordPress adaugă taguri de paragraf
în descrierile categoriilor. Pentru a opri acest lucru, adăugați următoarele în fișierul functions.php:// Elimină tagurile p din descrierea categoriei
remove_filter('term_description','wpautop');
Simplu și ușor (fără cod suplimentar).
Mulțumim

Pur și simplu adaugă următoarea linie de cod în fișierul functions.php al temei tale
Pentru conținut :
remove_filter( 'the_content', 'wpautop' );
Pentru rezumat
remove_filter( 'the_excerpt', 'wpautop' );
află mai multe : https://codex.wordpress.org/Function_Reference/wpautop

Puteți folosi o clasă specifică pentru postări precum single-post
sau single-format-standard
și să le ascundeți conform nevoilor doar pe o pagină singulară, astfel încât să nu existe conflicte cu alte părți ale site-ului.
Exemplu de cod CSS*
.single-post .entry-content p:empty { display: none; }
Exemplu de cod CSS pentru formatul specific de postare "Imagine"
.single-format-image .entry-content p:empty { display: none; }

Un alt mod de a-l codifica bazat pe soluția lui @chittaranjan
add_filter( 'the_content', 'remove_autop_for_image', 0 );
function remove_autop_for_image( $content ) {
global $post;
if ( is_singular('image'))
remove_filter('the_content', 'wpautop');
return $content;
}

deși întrebarea a primit deja răspuns, postez mai jos pentru referințe viitoare.
remove_filter ('the_exceprt', 'wpautop');
remove_filter ('the_content', 'wpautop');
remove_filter('term_description','wpautop');

Folosind wp_strip_all_tags
poți elimina toate tag-urile HTML, inclusiv p, div și altele.
https://developer.wordpress.org/reference/functions/wp_strip_all_tags/
wp_strip_all_tags(category_description());
