Cum să forțezi TinyMCE în WordPress să înlocuiască noile linii cu <br> și nu cu <p> </p>
Răspunsul sugerat de GavinR este corect.
Nu este nevoie să instalați plugin-ul sugerat, totuși. Adăugați acest mini plugin și sunteți gata:
<?php
defined( 'ABSPATH' ) OR exit;
/* Plugin Name: TinyMCE break în loc de paragraf */
function mytheme_tinymce_settings( $tinymce_init_settings ) {
$tinymce_init_settings['forced_root_block'] = false;
return $tinymce_init_settings;
}
add_filter( 'tiny_mce_before_init', 'mytheme_tinymce_settings' );
Acum, când apăsați Enter, va fi inserată eticheta <br>
în loc să creeze un nou paragraf. Dar atenție, dacă creați două linii noi consecutive, textul va fi totuși împărțit în paragrafe ca urmare a filtrului wpautop
aplicat conținutului postării. Trebuie mai întâi să eliminați acest filtru și să creați un nou filtru care va înlocui toate liniile noi cu etichete <br>
. Adăugați ceva de genul acesta în functions.php
pentru a afișa etichetele <br>
în șablonul dvs.:
remove_filter ( 'the_content', 'wpautop' );
add_filter ( 'the_content', 'add_newlines_to_post_content' );
function add_newlines_to_post_content( $content ) {
return nl2br( $content );
}

Instalează acest plugin: http://wordpress.org/plugins/advanced-tinymce-configuration/
și apoi setează forced_root_block la FALSE.

Acest lucru s-ar putea să nu funcționeze pentru tine, deoarece nu sunt sigur care este scenariul care ar necesita un salt de linie în loc de paragrafe. Dacă este pentru un anumit tip de postare sau un anumit șablon, ai putea face asta.
- Implementează plugin-ul Advanced Custom Fields.
- Creează un câmp personalizat pentru textul tău și selectează tipul de câmp "textarea" cu formatarea setată la "convert new lines into <br /> tags".
- Stabilește "locația" acestui câmp personalizat să apară doar pe tipul de postare sau șablonul dorit (câmpul ar putea înlocui editorul pe tipul de postare sau șablon, dacă dorești).
Evident, această abordare elimină toate opțiunile normale de formatare oferite de obicei de TinyMCE, inclusiv legături și inserarea de media. Așadar, s-ar putea să nu fie o opțiune pentru tine.

Din câte știu eu.. singura modalitate de a face asta este eliminarea filtrului wpautop
.
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
Această acțiune previne în mod sigur WordPress-ul să adauge tag-uri p
'artificiale'.
Cred că motivul este că WordPress este conceput parțial pentru "neinițiați".. ei consideră necesar să includă filtrul wpautop
, care procesează conținutul după ce acesta este trimis (sau la comutarea între modurile vizual și text); efectuând o serie de "verificări" pentru HTML valid.. și ajustând conținutul în consecință.
Deși acest lucru poate fi minunat pentru persoanele care nu ating niciodată partea de HTML; este o bătaie de cap pentru mulți utilizatori care încearcă să "se joace" cu HTML-ul.
NOTĂ: Eliminarea filtrului wpautop
va determina ca toate articolele/paginile tale (vechi și noi) să nu mai folosească acest filtru. Acest lucru va duce la faptul că tot HTML-ul din editorul de conținut va fi "strâns" împreună. Partea vizuală va apărea în regulă... dar partea de Text va fi comprimată... ceea ce face dificilă modificarea codului.

dacă dorești să faci indent la începutul propoziției după <br>
(SHIFT+ENTER), atunci poate fi necesar să folosești o soluție personalizată:
în functions.php adaugă:
add_action('init', 'add_cust_button');
function add_cust_button() {
if ( get_user_option('rich_editing') == 'true') {
add_filter('mce_external_plugins', 'add_mycust_plugin');
add_filter('mce_buttons_2', 'register_mycust_plugin');
}
}
function register_mycust_plugin($buttons) {
array_push($buttons, "|", "indent_button");
return $buttons;
}
function add_mycust_plugin($plugin_array) {
$plugin_array['my_custom_button'] = get_bloginfo('template_url').'/scripts/button.js';
return $plugin_array;
}
add_filter( 'tiny_mce_version', 'my_refresh_mce');
function my_refresh_mce($ver) {
$ver += 3;
return $ver;
}
apoi în folderul temei, creează un folder "scripts", iar în interiorul său creează un fișier pentru iconiță (numit "indent_img.png") și un fișier javascript (numit "button.js"), cu acest conținut:
(function() {
tinymce.create('tinymce.plugins.Nlineeplg', {
init : function(ed, url) {
ed.addButton('indent_button', {
title : 'indentare',
image : url+'/indent_img.png',
onclick : function() {
ed.execCommand('mceInsertContent', false, '<span style="margin:0 0 0 8px;"> </span>');
}
});
},
createControl : function(n, cm) {
return null;
}
});
tinymce.PluginManager.add('my_custom_button', tinymce.plugins.Nlineeplg);
})();
apoi, în pagina EDITOR, vei avea un buton special, iar când dai click la începutul propoziției și apeși acel buton, acesta va plasa o indentare.

Datorită Bigsmoke, este posibil să lucrăm cu wpautop:
A - Activarea sau dezactivarea wpautop pe anumite pagini selectate
B - Fără a modifica fișierul function.php
C - Fără a afecta paginile vechi dacă filtrul Wpautop a fost eliminat
D - Fără a comprima conținutul în partea de text a editorului
http://wordpress.org/plugins/wpautop-control/
Acum pot să-mi organizez majoritatea aspectelor textului beneficiind de paragrafe automate, apoi să finalizez aspectul fără să fie nevoie să activez sau dezactivez wpautop.

Dezactivarea funcției autop pentru aceasta este probabil o idee proastă, deoarece aduce multe alte modificări în modul în care este procesat conținutul editorului, modificări pe care cel mai probabil autorul le-ar dori să rămână active.

Ai dreptate. Dar pentru că WordPress forțează transformarea br/ în , devine un haos când încerci, de exemplu, să faci o ajustare fină a textului lângă o imagine.
Dacă ai o soluție mai curată pentru asta, aș fi încântat să o folosesc.

Gata. :) http://wordpress.stackexchange.com/questions/157427/how-avoid-wp-editor-to-change-br-by-nbsp
