it-swarm.asia

أوقف WordPress إضافة علامات <br> تلقائيًا لنشر المحتوى

هل هناك طريقة لمنع WordPress من إدراج علامات <br> تلقائيًا عند إضافة الإرجاع في محرر نصوص WordPress.

أرغب في أن يتصرف أكثر مثل محرر الشفرة حيث يمكنني هيكلة الشفرة بالطريقة التي أحبها وجعل قراءتها سهلة.

الكود الذي أستخدمه في المحرر هو:

[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]

أرغب في هيكلة مثل هذا بحيث يسهل قراءته وتعديله:

[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]

ومع ذلك ، عند القيام بذلك ، ستتم إضافة علامات <br> غير مرئية إلى محتوى المنشور مما يؤدي إلى تعطل تخطيط صفحتي.

24
mvaneijgen

إجابة shea ليست مثالية كما في كثير من الحالات:

  • لا تريد تجريد كل شيء من <br>, <p> وما إلى ذلك. فأنت تريده كسلوك افتراضي لمؤلفك المرئي WP والذي سيحذف الرمز أعلاه
  • في كثير من الحالات ، يُعتبر "اختراقًا للنواة" لأن هذا يغير السلوك الأساسي الافتراضي لـ WP - على سبيل المثال ، لن يتم تمرير مثل هذا الشيء في ThemeForest

كما أستطيع أن أراك لديك أساسا مشاكل معك الرموز المختصرة. الطريقة الصحيحة لمقاربة هذا لا تتمثل في تغيير السلوك الافتراضي (اختراق القرص الأساسي) ولكن فقط تصفية المحتوى. لذلك فقط أضف مرشحًا وفي متغير قم بتمرير صفيف من رموزك النارية التي تريد تصفيتها مثل هذا:

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

سيتم تصفية المحتوى الموجود في الداخل وبالتالي ستكون الرموز المختصرة خالية من <br>, <p> وما إلى ذلك ، لكن الأجزاء الأخرى من المحتوى - على سبيل المثال النص القياسي في محرر WP الذي تم إنشاؤه بواسطة المستخدم - ستظل مزودة بكامل وظائف WP.

المراجع:

  1. the_content WP filter
  2. Regex "مترجم"
  3. join PHP function
  4. preg_replace PHP function
25
Borek

تضيف الدالة wpautop() علامتي <p> و <br> إلى المحتوى الخاص بك من أجل الحفاظ على فواصل الأسطر. إذا كنت تفضل إضافة هذه العلامات بنفسك ، فيمكنك إزالة المرشحات التي تطبق هذه الوظيفة على محتوى المنشور:

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

إذا كنت ترغب في الاحتفاظ بإنشاء paragaraph التلقائي (إدراج علامات <p>) وإزالة علامات <br> الإضافية فقط ، يمكنك استخدام هذا الرمز بدلاً من ذلك:

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

انظر هذا الرابط إذا كنت غير متأكد من مكان وضع هذا الرمز.

13
shea

تثبيت البرنامج المساعد "لا تشويش ترميمي".

يضيف خيار مربع اختيار لكل صفحة تعطيل الإدراج التلقائي لعلامات <p> و <br>.

هناك أيضًا خيار للقيام بهذا على مستوى الموقع.

3
Brent Baccala

ربما هو محرر النصوص الذي يجعل الفوضى. وهذا هو ما فعلته:

أنا استخدم TinyMCE. ضمن إعدادات محرر النصوص ، ألغيت تحديد "إيقاف إزالة العلامات" <p> "و" <br /> "عند حفظها وعرضها في محرر HTML". عملت لي.

1
Svein E. Slotte Pedersen

لم تنجح إجابة Borek لحالة الاستخدام الخاصة بي ، والتي تكتب HTML الخام.

لذلك ، استخدمت Code Snippets plugin (يتيح لك بسهولة إضافة قصاصات تعسفية PHP يتم تشغيلها) لإنشاء مقتطف لـ[html][/html]رمز قصير. الأمر الرائع في هذا الرمز القصير هو أنه متوافق مع toggle-wpautop plugin الذي يتيح لك تعطيل الإدراج التلقائي لعلامات <br> و <p> في منشور بأكمله. يمكنك استخدام إما ، مزيج المباراة.

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
Greg

تزيل هذه الوظيفة فقط العلامة <p> و <br> للرمز القصير.

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');
0
Burhan Nasir

ربما يمكنك ببساطة استخدام do_shortcode() إذا كان كل ما لديك في محتواك عبارة عن رموز مختصرة ، طالما أنك لا تملك أي محتوى آخر يحتاج إلى المرشحات.

لا أعرف السياق ، ولكن إذا كنت في الحلقة:

echo do_shortcode($post->post_content);

0
Simon