İçeriği göndermek için WordPress'i otomatik olarak <br> etiketlerini eklemeyi durdurma


26

<br>WordPress metin düzenleyicisine iade eklerken, WordPress'in etiketleri otomatik olarak eklemesini engellemenin bir yolu var mı ?

Daha fazla istediğim gibi yapılandırabileceğim ve okumayı kolaylaştırabileceğim bir kod düzenleyici gibi davranmasını istiyorum.

Editörde kullandığım kod:

[one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third][one_third][team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"][custom_button url="#"]For more information[/custom_button][/team_member][/one_third]

Bu şekilde yapılandırmak istiyorum, bu yüzden okumak ve düzenlemek daha kolay:

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

[one_third]
[team_member image_url="team_member.jpg" name="Laser vision" role="WordPress Designer"]
[custom_button url="#"]For more information[/custom_button]
[/team_member]
[/one_third]

Bununla birlikte, bunu yaparken <br>, yazım içeriğine sayfamın düzenini bozacak görünmez etiketler eklenecek.


Etiketleri her yerde mi , yoksa yalnızca bu kısa kodlar için mi çıkarmak istiyorsunuz ?
shea

Lütfen cevabımı buraya bakınız: wordpress.stackexchange.com/questions/55782/…
Chiedo

Yanıtlar:


25

Shea cevabı birçok durumda olduğu gibi ideal değildir:

  • Her şeyi <br>, <p>vs. silmek istemezsiniz. WP görsel besteciniz için yukarıdaki kodun silineceği varsayılan bir davranış olarak istersiniz.
  • Çoğu durumda, WP'nin varsayılan çekirdek davranışını değiştirdiği için "çekirdeği kırmak" olarak kabul edilir - örneğin böyle bir şey ThemeForest'e geçmeyecektir

Görebildiğim gibi, esas olarak sizinle kısa kodlarınız var. Buna yaklaşmanın doğru yolu, varsayılan davranışı değiştirmek (çekirdeği kesmek) değil, yalnızca içeriği filtrelemektir. Bu nedenle, sadece bir filtre ekleyin ve bir değişkende geçiş yapmak istediğiniz kısa kodlarınızın bir dizini:

function the_content_filter($content) {
    $block = join("|",array("one_third", "team_member"));
    $rep = preg_replace("/(<p>)?\[($block)(\s[^\]]+)?\](<\/p>|<br \/>)?/","[$2$3]",$content);
    $rep = preg_replace("/(<p>)?\[\/($block)](<\/p>|<br \/>)?/","[/$2]",$rep);
return $rep;
}
add_filter("the_content", "the_content_filter");

İçerideki içerik filtrelenecek ve bu nedenle kısa kodlarınız <br>, <p>vb.

Referanslar:

  1. the_content WP filtresi
  2. Regex "çevirmen"
  3. PHP işlevine katılmak
  4. preg_replace PHP işlevi

Projemde mükemmel çalıştı. Müthiş, muazzam, muhteşem, mükemmel ..... Çok mükemmel!
arefin2k

@Borek Bu harika ve gerçekten iyi çalışıyor gibi görünüyor (+1), ancak cevabınızı geliştirmek için ne yaptığını açıklayabilir misiniz? Her şeyden bakıldığında , yakın ve kısa kodlardan çıkartma <p>ve <br>etiketleme , ancak tam olarak emin değilim (REGEX becerilerim kesinlikle çiziksiz değil). Bizim için ne yaptığını özetler misiniz ve şimdi diğer kısa kodlar için yapılandırabilir miyiz? one_thirdteam_member
dKen

@ dKen Bu tam olarak ne yazdığını yapıyor. Bunun dışında regex, içeriğe WP filtresi the_content filtresi tarafından sığdırıldığı için gerçekten basit. Sadece filtreleyecek içeriği, hangi (blok) ve nasıl (rep) filtreleyeceğimizi belirttiğimiz işlev aracılığıyla vermemiz gerekir. Referanslar ekledim, böylece her bir işlevi ve filtreyi kontrol ederek bunu daha iyi anlayabilirsiniz. Daha fazla kısa kod eklemeye gelince, $ blok dizisini basitçe kısa kod adları ekleyerek genişletmeniz yeterlidirjoin("|",array("one_third", "team_member", "next_one", "another_one", "one_more"));
Borek

... pro geliştirici, aferin dedi. Upvoting.
füzyon27

Bilginize Bu, yalnızca sayfa görüntülendiğinde çalışır. Ancak, editörünüzde hala istenmeyen <p> ve <br> 'leri her zamanki gibi görebilirsiniz.
MarsAndBack,

13

wpautop()Fonksiyon ekler <p>ve <br>sırayla içeriğe etiketleri satır sonlarını korumak için. Bu etiketleri kendiniz eklemeyi tercih ediyorsanız, bu işlevi yazı içeriğine uygulayan filtreleri kaldırabilirsiniz:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

Otomatik paragaraph oluşturma işlemini ( <p>etiket ekleme ) korumak ve yalnızca ek <br>etiketleri kaldırmak istiyorsanız, bu kodu kullanabilirsiniz:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

function wpse_wpautop_nobr( $content ) {
    return wpautop( $content, false );
}

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

Bu kodu nereye koyacağınızdan emin değilseniz bu bağlantıya bakın .


3

"İşaretimi Muck Etme" eklentisini kurun.

Otomatik ekleme <p>ve <br>etiketlemeyi devre dışı bırakarak her sayfaya bir onay kutusu seçeneği ekler .

Bu site genelinde yapmak için bir seçenek de var.


1

Muhtemelen bir karmaşa yapan metin editörüdür. Ben de öyle yaptım:

TinyMCE kullanıyorum. Metin düzenleyicinin ayarları altında, "<p>" ve "<br />" etiketlerini "HTML editöründe kaydederken ve gösterirken" kaldırmayı durdur "un işaretini kaldırdım. Benim için çalıştı.


0

Belki de do_shortcode()içeriğinizdeki tek şey kısa kodlarsa, filtrelere ihtiyaç duyan başka herhangi bir içeriğiniz olmadığı sürece kullanabilirsiniz.

İçeriği bilmiyorum, ama döngüdeyseniz:

echo do_shortcode($post->post_content);


0

Borek'in cevabı, ham HTML yazan kullanım davam için işe yaramadı.

Bunun için bir kod kod parçacığı oluşturmak için Kod Parçacıkları eklentisini kullandım (çalıştırılan rastgele PHP parçacıklarını kolayca eklemenizi sağlar) [html][/html]. Bu kısa kodun en güzel yanı , bir yayının tamamına otomatik olarak eklenmesini <br>ve <p>etiketlerini devre dışı bırakmanıza izin veren toggle-wpautop eklentisiyle uyumlu olmasıdır . İkisini de kullanabilirsiniz, karıştırın ve eşleştirin.

function html_shorttag_filter($content) {
  // Based on: https://wordpress.org/plugins/lct-temporary-wpautop-disable-shortcode/
  $new_content = '';
  $pieces = preg_split('/(\[html\].*?\[\/html\])/is', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
  // don't interfere with plugin that disables wpautop on the entire page
  // see: https://plugins.svn.wordpress.org/toggle-wpautop/tags/1.2.2/toggle-wpautop.php
  $autop_disabled = get_post_meta(get_the_ID(), '_lp_disable_wpautop', true);
  foreach ($pieces as $piece) {
    if (preg_match( '/\[html\](.*?)\[\/html\]/is', $piece, $matches)) {
      $new_content .= $matches[1];
    } else {
      $new_content .= $autop_disabled ? $piece : wpautop($piece);
    }
  }
  // remove the wpautop filter, but only do it if the other plugin won't do it for us
  if (!$autop_disabled) {
    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');
  }
  return $new_content;
}
// idea to use 9 is from: https://plugins.svn.wordpress.org/wpautop-control/trunk/wpautop-control.php
add_filter('the_content', 'html_shorttag_filter', 9);
add_filter('the_excerpt', 'html_shorttag_filter', 9);

0

Bu işlev yalnızca kısa kod için <p>ve <br>etiketini kaldırır .

function bnd_fix_shortcodes_extra_line_break( $content ){
  $array = array (
    '<p>['    => '[',
    ']</p>'   => ']',
    ']<br />' => ']'
  );
  $content = strtr( $content, $array );
  return $content;
}
add_filter('the_content', 'bnd_fix_shortcodes_extra_line_break');

Aynı zamanda tüm davaları etkiler [ve ]edilir değil bir shortcode çağrısının bir parçası olarak kullanılır.
fuxia

0

Kod kesmeye aşina olmayanlar veya eklenti kullanmak istemeyenler için bunu yapabilirsiniz.

1) tüm geçerli kodu WP sayfalarından kopyala (metin editörü) görüntü tanımını buraya girin

2) sonra not defterine yapıştırın ve düzenlemeye devam edin (kısa kod, html kodu veya css kodu ekleyin)

3) WP sayfalarındaki yapıştırıcıyı not defterinden aynı dağ eteğine kopyala (metin editörü)

4) Sayfaları yayınlamak için aynı WP sayfalarının sağ tarafında bulunan [GÜNCELLEME] düğmesine basın

görüntü tanımını buraya girin

5) Sonunda canlı sitede önizleme

Buradaki hile, bu belirli sayfalar için [görsel editör] e geri dönmüyor, daha sonra [p] veya [br] için otomatik ekleme artık gerçekleşmeyecek.


-3

Çok basit bir çözüm: Wordpress editöründe yeni çizgiler kullanmayın. Evet, yeni çizgiler netleşiyor. Bununla birlikte, bu durumda, hiçbir kesin kırılma kabul edilebilir bir şekilde anlaşılamayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.