WordPress rimuove i tag <p>?

14 mar 2014, 15:34:43
Visualizzazioni: 27.2K
Voti: 7

Mi sono già imbattuto in un caso in cui WordPress aggiungeva i tag <p>. Tuttavia ora sto affrontando la situazione opposta. Quando aggiungo shortcode [] all'interno dei tag <p>, WordPress rimuove automaticamente i tag <p>.

<p>[anyshortcode]Ciao Mondo[/anyshortcode]</p>

Diventa:

Ciao Mondo

Aggiungere dir="ltr" ai tag <p> sembra risolvere il problema, forse c'è un modo per aggiungerlo programmaticamente a tutti i tag <p>?

Avete idee su come risolvere questo problema?

2
Commenti

Puoi utilizzare un plugin avanzato per tinymce che è più potente e fa funzionare anche i tag p.

Foxsk8 Foxsk8
14 mar 2014 23:21:50

usa 'wpautop'. Esempio: '<?php echo wpautop('[anyshortcode]'); ?>'

user2584538 user2584538
23 mar 2016 08:17:54
Tutte le risposte alla domanda 5
0

Questo è praticamente ciò che Foxsk8 ha menzionato in un commento, quindi il merito dovrebbe andare a lui, ma queste istruzioni aggiuntive saranno utili. Il plugin per WordPress chiamato TinyMCE Advanced risolverà il tuo problema.

Questo plugin include un'opzione all'interno di Impostazioni > TinyMCE Advanced che risolverà il problema dei tag <p> che scompaiono. Seleziona la casella di controllo con l'etichetta Interrompi la rimozione dei tag <p> e <br /> durante il salvataggio e mostrali nell'editor di testo e i tuoi tag <p> verranno preservati.

13 dic 2014 20:47:56
0

TinyMCE è programmato per rendere facile la modifica (cosa che per noi esperti di HTML spesso non è il caso). Per impostazione predefinita non dovrebbe accettare i tag <p> attorno ai [BLOCCHI]. Questo perché "[]" sono utilizzati per gli shortcode non solo in WP ma in una tonnellata di CMS basati su PHP. Gli shortcode dovrebbero avere il wrapper di contenuto appropriato.

Ciò significa che la soluzione è aggiungere i tag <p> nel codice del tuo shortcode in modo che il tuo contenuto sia avvolto nel modo che desideri.

23 set 2014 21:16:36
0

Come aggiunta a Foxsk8 e E. Serrano. Se il post contiene <p> intorno agli shortcode, WordPress lo rimuoverà comunque. Questo avviene nel filtro shortcode_unautop che viene aggiunto in '\wp-includes\default-filters.php'. Garantisce che gli shortcode non siano racchiusi in <p>...</p>.

Quindi, dobbiamo rimuoverli:

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

Puoi aggiungere il seguente codice nel tuo file function.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));
            }
    }

    $array = array(
            '<p>[' => '[',
            ']</p>' => ']',
            ']<br />' => ']'
    );

    $new_content = strtr($new_content, $array);

    return $new_content;

}

Ora chiama questa funzione dove necessario come:

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

Un po' di spiegazione sarebbe utile invece di limitarsi a pubblicare il codice.

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

Aggiungi questo al tuo file functions.php all'interno della cartella del tuo tema.

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

Vedi anche in altri posti. Non funziona per me.

Garavani Garavani
18 ott 2023 18:32:51