it-swarm-id.com

Bagaimana saya bisa memfilter Microsoft Word gunk dari konten yang di-paste?

Saya memiliki beberapa pengguna yang memposting ke blog grup dan dapat memotong-dan-menempel tetapi pasta mereka mencakup hal-hal seperti:

<!– /* Font Definitions */ @font-face {font-family:”Cambria Math”; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face {font-family:”Trebuchet MS”; panose-1:2 11 6 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:”"; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Trebuchet MS”,”sans-serif”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Times New Roman”,”serif”; mso-fareast-font-family:”Times New Roman”;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:12.0pt; mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; mso-ascii-font-family:”Trebuchet MS”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:”Trebuchet MS”; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} –>

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:”";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:Widow-Orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:”Times New Roman”;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}

Apa yang dapat saya lakukan untuk memfilter kode seperti ini secara otomatis?

3
artlung

Ada tombol pada editor teks visual bawaan WordPress yang akan menghapus format Microsoft Word. Itu berlabel "Tempel Dari Kata" alt text

8
Chris_O

Saya sarankan menggunakan Ozh's TinyMCE Advanced plugin. Ini memungkinkan Anda menambahkan opsi 'Tempel dari Kata' yang menangani semua itu untuk Anda.

Namun, jika Anda tidak tertarik dengan itu, Anda memiliki beberapa opsi lagi. Seperti ini:

function get_rid_of_mso_junk( $content ){
  return preg_replace( '@(mso|panose)[^:]{1,25}:[^;]+;(\s+)?(\n+)[email protected]', '', $content );
}

add_filter( 'content_save_pre', 'get_rid_of_mso_junk' );

Terus tambahkan deklarasi yang tidak diinginkan ke set penangkapan pertama di regex itu untuk menambahkan baris yang harus dihapus. E.g .: (mso|panose|other-junk|annoyance).

5
John P Bloch

Bagi siapa pun yang mencari solusi untuk masalah ini, saya melakukan sesuatu seperti ini:

function delete_between($beginning, $end, $string) {
    $beginningPos = strpos($string, $beginning);
    $endPos = strpos($string, $end);
    if (!$beginningPos || !$endPos) {
    return $string;
    }

    $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);

    return str_replace($textToDelete, '', $string);
}

function clean_content( $content ){
    if( is_home() || is_single()){
        $content = delete_between('<!--[if gte mso', ';}', $content);   
        return $content;
    }else{
    return $content;
}

add_filter( 'the_content', 'clean_content' );
add_filter( 'the_excerpt', 'clean_content' );

Anda dapat mengganti string di fungsi delete_between dengan apa pun yang Anda inginkan. Tapi sepertinya itu berhasil bagiku.

2
codeprokanner

Saya telah bekerja dengan klien yang sering menghadapi masalah ini. Caranya, saya temukan, adalah menyalin-tempel ke tampilan HTML dan kemudian beralih kembali ke editor Visual untuk memformat Tweak jika perlu.

Ini juga diperlukan jika menyalin-menempel dari situs web lain. Kadang-kadang Anda secara tidak sengaja menarik definisi kelas dan gaya in-line dari sumber eksternal dan itu dapat merusak tampilan jika Anda tidak memiliki kelas atau gaya yang sama diatur atau didukung oleh situs Anda.

Pilihan lain adalah mengekspos pengguna Anda ke Windows Live Writer . Ini adalah produk Microsoft yang sepenuhnya gratis, diputar dengan baik dengan copy-paste dari Word, dan dapat berinteraksi dengan WordPress - Anda menulis posting Anda, mengedit posting Anda, menggunakan pemeriksa ejaan internal, memformat posting untuk ditampilkan persis seperti yang Anda inginkan, lalu klik "Terbitkan" untuk mendorong posting Anda ke WordPress melalui XMLRPC. Ini adalah sistem yang cukup sehat yang membuatnya luar biasa mudah untuk mengajari blogger pertama kali cara menulis blog ... terutama karena UI sangat mirip dengan Word.

2
EAMann