WordPress elimină tag-urile <p>?

14 mar. 2014, 15:34:43
Vizualizări: 27.2K
Voturi: 7

M-am confruntat deja cu un caz în care WordPress a adăugat tag-uri <p>. Însă acum mă confrunt cu situația opusă. Când adaug shortcode-uri [] în interiorul tag-urilor <p>, WordPress elimină automat tag-urile <p>.

<p>[anyshortcode]Salut Lume[/anyshortcode]</p>

Devine:

Salut Lume

Adăugarea atributului dir="ltr" la tag-urile <p> pare să rezolve problema, poate există o modalitate de a-l adăuga programatic la toate tag-urile <p>?

Aveți idei cum să rezolv această problemă?

2
Comentarii

Poți folosi un plugin Avansat pentru TinyMCE care este mai puternic și face ca și tag-urile p să funcționeze.

Foxsk8 Foxsk8
14 mar. 2014 23:21:50

folosește 'wpautop'. Ex: '<?php echo wpautop('[anyshortcode]'); ?>'

user2584538 user2584538
23 mar. 2016 08:17:54
Toate răspunsurile la întrebare 5
0

Aceasta este practic ceea ce a menționat Foxsk8 într-un comentariu, așa că creditul ar trebui să-i revină lui, dar aceste instrucțiuni suplimentare vor fi utile. Plugin-ul WordPress numit TinyMCE Advanced vă va rezolva problema.

Acest plugin vine cu o opțiune în interiorul Settings > TinyMCE Advanced care vă va repara tag-urile <p> care dispar. Bifați caseta de selectare intitulată Stop removing the <p> and <br /> tags when saving and show them in the Text editor și tag-urile dvs. <p> vor fi păstrate.

13 dec. 2014 20:47:56
0

TinyMCE este programat pentru a face editarea ușoară (ceea ce pentru noi, cei pricepuți în HTML, adesea nu este cazul). În mod implicit, nu ar trebui să accepte tag-urile <p> în jurul [BLOCURILOR]. Acest lucru se întâmplă deoarece "[]" sunt folosite pentru shortcode-uri nu doar în WP, ci și într-o multime de CMS-uri bazate pe PHP. Shortcode-urile ar trebui să aibă învelișul de conținut adecvat.

Prin urmare, soluția este să adăugați tag-urile <p> în codul shortcode-ului dvs., astfel încât conținutul dvs. să fie învelit în modul dorit.

23 sept. 2014 21:16:36
0

Ca o completare la Foxsk8 și E. Serrano. Dacă un post conține <p> în jurul shortcode-urilor, WordPress le va elimina în continuare. Acest lucru se întâmplă în filtrul shortcode_unautop care este adăugat în '\wp-includes\default-filters.php'. Acest filtru asigură că shortcode-urile nu sunt încadrate în <p>...</p>.

Prin urmare, trebuie să le eliminăm:

remove_filter( 'the_content', 'shortcode_unautop' );
3 nov. 2019 21:27:09
1

Puteți adăuga următorul cod în fișierul functions.php

function content_formatter($content){

    $new_content = '';
    $pattern_full = '{(\[raw\].*?\[/raw\])}is';
    $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

    foreach ($pieces as $piece) {
            if (preg_match($pattern_contents, $piece, $matches)) {
                    $new_content .= $matches[1];
            } else {
                    $new_content .= wptexturize(wpautop($piece)); // Formatează textul conform standardelor WordPress
            }
    }

    $array = array(
            '<p>[' => '[', // Elimină tagurile <p> înainte de [
            ']</p>' => ']', // Elimină tagurile </p> după ]
            ']<br />' => ']' // Elimină <br /> după ]
    );

    $new_content = strtr($new_content, $array); // Înlocuiește șirurile conform array-ului definit

    return $new_content;

}

Acum apelați această funcție oriunde este necesar, de exemplu:

<?php echo content_formatter( get_field('field_name') ); ?>
23 mai 2016 09:45:58
Comentarii

Ar fi bine să adaugi puțin context în loc să postezi doar codul.

bravokeyl bravokeyl
23 mai 2016 10:06:04
1
-2

Adăugați acest cod în fișierul functions.php din directorul temei dumneavoastră.

remove_filter( 'the_content', 'wpautop' );
14 mar. 2014 20:54:31
Comentarii

Vezi asta și în alte locuri. Nu funcționează pentru mine.

Garavani Garavani
18 oct. 2023 18:32:51