it-swarm.asia

Microsoft Word gunk'u yapıştırılan içerikten nasıl filtreleyebilirim?

Bir grup bloguna gönderide bulunan ve kesip yapıştırabilen bazı kullanıcılarım var ancak pastaları aşağıdakileri içeriyor:

<!– /* 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;}

Böyle bir kodu otomatik olarak filtrelemek için ne yapabilirim?

3
artlung

WordPress'te yerleşik olarak bulunan ve Microsoft Word'ü biçimlendirecek olan görsel metin editöründe bir düğme bulunmaktadır. "Word'den Yapıştır" etiketli alt text

8
Chris_O

Ozh'un TinyMCE Advanced eklentisini kullanmanızı öneririm. Tüm bunları sizin için halleder bir 'Word'den Yapıştır' seçeneği eklemenizi sağlar.

Bununla birlikte, bununla ilgilenmiyorsanız, birkaç seçeneğiniz daha var. Bunun gibi:

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' );

Kaldırılması gereken satırları eklemek için bu regex'te ilk yakalama setine istenmeyen bildirimler eklemeye devam edin. E.g .: (mso|panose|other-junk|annoyance).

5
John P Bloch

Bu soruna bir çözüm arayan herkes için, şöyle bir şey yaptım:

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' );

Delete_between işlevindeki dizeleri istediğiniz şekilde değiştirebilirsiniz. Yine de benim için işe yaradı.

2
codeprokanner

Bu problemi yaşayan müşterilerle çalıştım. Bulduğum püf noktası, HTML görünümüne kopyalayıp yapıştırmak ve ardından gerektiğinde Görsel düzenleyiciye Tweak formatına geçmek.

Bu, başka bir web sitesinden kopyala yapıştırmak durumunda da gereklidir. Bazen yanlışlıkla harici tanımlardan sınıf tanımlarını ve satır içi stilleri çekersiniz ve siteniz tarafından ayarlanmış veya desteklenmiş aynı sınıflar veya stiller yoksa ekranı kırabilir.

Diğer bir seçenek de kullanıcılarınızı Windows Live Writer 'a maruz bırakmak olacaktır. Tamamen ücretsiz bir Microsoft ürünüdür, Word'den kopyala-yapıştır ile iyi çalışır ve WordPress ile etkileşime girebilir - yazınızı yazarsınız, yazınızı düzenlersiniz, yerleşik yazım denetleyicisini kullanırsınız, yazınızı biçimlendirirsiniz tam olarak nasıl isterseniz, ardından yayınınızı WordPress'e XMLRPC ile göndermek için "Yayınla" yı tıklayın. İlk defa blogcuya nasıl blog yazılacağını öğretmek için inanılmaz derecede kolaylaştıran oldukça sağlam bir sistem ... özellikle de kullanıcı arayüzü başlangıç ​​için Word'e çok benzer.

2
EAMann