elimină tagurile <p> din the_content

9 aug. 2013, 01:15:45
Vizualizări: 63.9K
Voturi: 8

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?

3
Comentarii

De ce contează tag-ul <p>? Presupun că problema de bază este doar stilizarea. În acest caz, cred că o soluție CSS ar fi cea mai ușoară.

s_ha_dum s_ha_dum
9 aug. 2013 01:31:24

tag-ul <p> este prietenul tău. Chiar ar trebui să înveți cum să-l folosești.

westondeboer westondeboer
9 aug. 2013 03:14:49

ambele comentarii sunt pur și simplu proaste. html contează din mai multe motive, dar în acest caz pentru că utilizatorul cere în mod specific o soluție care să nu le folosească.

albert albert
18 dec. 2018 18:41:36
Toate răspunsurile la întrebare 12
0

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ă!

9 aug. 2013 01:29:38
0

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.

7 dec. 2013 20:18:59
0

Î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

14 nov. 2018 18:20:23
0

Poți folosi get_the_content() în loc de the_content(). Aceasta poate rezolva problema ta, iar o altă soluție este la fel cum a descris-o @Chittaranjan

5 iun. 2015 14:27:35
0

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

12 ian. 2017 09:52:20
1

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; }
12 ian. 2017 09:23:52
Comentarii

Sugestie excelentă! Nu știam că există :empty!

Kenton de Jong Kenton de Jong
10 iul. 2020 20:06:42
0

Pentru a elimina tag-ul p din conținut puteți folosi codul de mai jos

<?php remove_filter ('the_content', 'wpautop'); ?>
5 iun. 2015 14:34:55
0

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;
}
5 iun. 2015 16:41:11
1

introduceți acest cod în "style.css" al "Temei copil active"

p:empty {
  display: none;
}
12 ian. 2017 08:57:46
Comentarii

+1 p:empty { display: none; } @Parthavi-Patel. Este bine să ascunzi elementele goale, deoarece eliminarea funcțiilor native este o practică proastă, chiar dacă avem această opțiune.

Maqk Maqk
12 ian. 2017 09:04:40
0

Dacă dorești să elimini formatarea automată de pe o anumită pagină sau articol, poți folosi următorul cod:

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
26 sept. 2017 22:55:55
0
-1

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');

Sursă

27 dec. 2017 11:49:37
1
-1

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());

17 dec. 2021 09:00:05
Comentarii

Întrebarea este despre oprirea generării automate a acestor etichete de către WordPress, nu despre eliminarea etichetelor dintr-un șir din baza de date.

Rup Rup
19 dec. 2021 22:07:46