Mantenere gli "a capo" quando si salvano e visualizzano i dati dei campi personalizzati

20 ago 2012, 15:46:45
Visualizzazioni: 26.6K
Voti: 8

Sto raccogliendo dati tramite un plugin per form e salvando questi dati sotto forma di post con diversi campi personalizzati. Successivamente visualizzo il contenuto del post e i campi personalizzati nel mio template usando...

if( get_post_meta( $post->ID, '_aboutus', true ) ) :                        
    echo '<div class="companyaboutus">' . get_post_meta($post->ID, '_aboutus', true) . '</div>';
endif;

Il campo del form per il testo "Chi siamo" è un'area di testo e la maggior parte dei contributori aggiunge diverse righe di testo nel campo. Tuttavia, visualizzando il contenuto/testo tramite il codice sopra non vengono mostrati gli "a capo" - qualche idea su come preservare i line break?

1
Commenti

Potresti aggiungere il CSS white-space: pre-wrap. Dai un'occhiata a questa risposta su StackOverflow

Kaspar Lee Kaspar Lee
17 gen 2016 11:45:49
Tutte le risposte alla domanda 7
0
10

Mi sono bloccato con la stessa domanda e ho effettivamente testato wpautop(). Ha funzionato, ad esempio:

echo wpautop(get_post_meta($post->ID, '_aboutus', true));

Tuttavia, mi sono imbattuto in un problema. Quando si sanitizza l'input dell'utente, non utilizzare un metodo di sanitizzazione che rimuove gli a capo prima di usare wpautop :)

5 nov 2014 14:14:52
0

Questo potrebbe probabilmente aiutare,

http://codex.wordpress.org/Function_Reference/wpautop

Questa funzione converte le nuove righe in tag html <br/>

29 ott 2012 14:15:12
0

Non so quale plugin per moduli utilizzi e come salvi i dati nel database. Ma presumo che gli a capo vengano salvati nel database.

Ma come potresti sapere, un a capo nel codice sorgente di una pagina HTML non mostra un a capo nel browser. Esiste una pratica funzione PHP chiamata nl2br() che aggiungerà un tag <br/> per ogni a capo nel testo del contenuto dell'utente.

20 ago 2012 20:28:54
0

Quello che mi piace fare è ricreare tutti i filtri predefiniti che vengono applicati a the_content aggiungendo quanto segue in functions.php.

/* 
 * Ricrea i filtri predefiniti su the_content
 * questo renderà molto più semplice visualizzare il contenuto meta con la formattazione corretta/attesa
*/
add_filter( 'meta_content', 'wptexturize'        );
add_filter( 'meta_content', 'convert_smilies'    );
add_filter( 'meta_content', 'convert_chars'      );
add_filter( 'meta_content', 'wpautop'            );
add_filter( 'meta_content', 'shortcode_unautop'  );
add_filter( 'meta_content', 'prepend_attachment' );

Quindi il codice del template sarebbe:

<?php 
if( $about = get_post_meta($post->ID, '_aboutus', true ) ): 
  echo '<div class="companyaboutus">'. apply_filters( 'meta_content', $about ) . '</div>'; 
endif; 
?>

Potresti, naturalmente, usare the_content ma ho scoperto che anche i plugin si agganciano a questo per mostrare pulsanti di condivisione e simili, quindi questo metodo evita che i pulsanti di condivisione prendano il controllo della tua pagina.

1 dic 2013 15:19:41
0

Utilizza wp_kses con un array vuoto come parametro allowed_html. Questo sanificherà la stringa senza rimuovere le interruzioni di riga e dovrebbe soddisfare la maggior parte degli standard di codifica

23 lug 2016 00:04:46
0

Sembra funzionare correttamente:

<? $source = get_post_meta($post->ID, '_aboutus', true);
if($source){
$source = explode("\n", $source); ?>
<? for($i = 0;$i<sizeof($source);$i++){ ?>
<? echo $source[$i]; ?><br />
<? } ?>
<? } ?>
<?php if(get_post_meta($post->ID, '_aboutus', true)):                                       echo '</div>'; endif; ?>
21 ago 2012 11:26:34
0

Converti \n in <br>

nl2br(get_post_meta($post->ID, '_aboutus', true));
17 dic 2015 18:52:27