هل هناك طريقة لمنع 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>
غير مرئية إلى محتوى المنشور مما يؤدي إلى تعطل تخطيط صفحتي.
إجابة shea ليست مثالية كما في كثير من الحالات:
<br>, <p>
وما إلى ذلك. فأنت تريده كسلوك افتراضي لمؤلفك المرئي WP والذي سيحذف الرمز أعلاهكما أستطيع أن أراك لديك أساسا مشاكل معك الرموز المختصرة. الطريقة الصحيحة لمقاربة هذا لا تتمثل في تغيير السلوك الافتراضي (اختراق القرص الأساسي) ولكن فقط تصفية المحتوى. لذلك فقط أضف مرشحًا وفي متغير قم بتمرير صفيف من رموزك النارية التي تريد تصفيتها مثل هذا:
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.
المراجع:
تضيف الدالة 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' );
انظر هذا الرابط إذا كنت غير متأكد من مكان وضع هذا الرمز.
تثبيت البرنامج المساعد "لا تشويش ترميمي".
يضيف خيار مربع اختيار لكل صفحة تعطيل الإدراج التلقائي لعلامات <p>
و <br>
.
هناك أيضًا خيار للقيام بهذا على مستوى الموقع.
ربما هو محرر النصوص الذي يجعل الفوضى. وهذا هو ما فعلته:
أنا استخدم TinyMCE. ضمن إعدادات محرر النصوص ، ألغيت تحديد "إيقاف إزالة العلامات" <p> "و" <br /> "عند حفظها وعرضها في محرر HTML". عملت لي.
لم تنجح إجابة 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);
تزيل هذه الوظيفة فقط العلامة <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');
ربما يمكنك ببساطة استخدام do_shortcode()
إذا كان كل ما لديك في محتواك عبارة عن رموز مختصرة ، طالما أنك لا تملك أي محتوى آخر يحتاج إلى المرشحات.
لا أعرف السياق ، ولكن إذا كنت في الحلقة:
echo do_shortcode($post->post_content);