सामग्री को पोस्ट करने के लिए <br> टैग को स्वचालित रूप से जोड़ना बंद करें


26

क्या <br>वर्डप्रेस पाठ संपादक में रिटर्न जोड़ते समय वर्डप्रेस को स्वचालित रूप से टैग डालने से रोकने का एक तरीका है ।

मैं इसके लिए एक कोड संपादक की तरह अधिक व्यवहार करना चाहूंगा जहां मैं कोड को संरचना कर सकता हूं कि मुझे कैसे पसंद है और इसे पढ़ना आसान है।

संपादक में जो कोड मैं उपयोग कर रहा हूं वह है:

[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>करने पर पोस्ट सामग्री में अदृश्य टैग जोड़े जाएंगे जो मेरे पेज के लेआउट को गड़बड़ कर देंगे।


क्या आप हर जगह या केवल उन शॉर्टकोड के लिए टैग हटाना चाहते हैं ?
शिया

कृपया मेरा जवाब यहाँ देखें: wordpress.stackexchange.com/questions/55782/…
Chiedo

जवाबों:


25

शीया का उत्तर कई मामलों में आदर्श नहीं है:

  • आप <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 फ़िल्टर
  2. रेगेक्स "अनुवादक"
  3. PHP समारोह में शामिल हों
  4. preg_replace PHP फ़ंक्शन

यह पूरी तरह से मेरे प्रोजेक्ट में काम आया। बहुत बढ़िया, जबरदस्त, अद्भुत, शानदार ..... इतना उत्कृष्ट!
arefin2k

@ बोरक यह कमाल है और यह वास्तव में अच्छी तरह से (+1) काम करता है, लेकिन अपने उत्तर को बेहतर बनाने के लिए आप बता सकते हैं कि यह क्या कर रहा है? चीजों की शक्ल से, यह पास और शॉर्टकोड से हटा रहा है <p>और <br>टैग करता है , लेकिन मुझे बिल्कुल यकीन नहीं है (मेरे रेजेक्स कौशल निश्चित रूप से खरोंच तक नहीं हैं)। क्या आप यह बता सकते हैं कि यह हमारे लिए क्या करता है, और अब हम इसे अन्य शॉर्टकोड के लिए कॉन्फ़िगर कर सकते हैं? one_thirdteam_member
dKen

@dKen यह वही है जो आपने लिखा था। Ingex के अलावा यह वास्तव में सरल है क्योंकि सामग्री को WP फ़िल्टर the_content में बनाया गया है। हमें केवल फ़ंक्शन के माध्यम से फ़िल्टर करने के लिए सामग्री देने की आवश्यकता है जिसमें हम निर्दिष्ट करते हैं कि फ़िल्टर करने के लिए क्या (ब्लॉक) और कैसे (प्रतिनिधि)। मैंने संदर्भ जोड़े हैं ताकि आप प्रत्येक फ़ंक्शन और फ़िल्टर की जांच करके इसे बेहतर ढंग से समझ सकें। अधिक शॉर्टकोड जोड़ने के लिए आपको बस $ ब्लॉक एरे को विस्तार देने की आवश्यकता है, बस इसमें शॉर्टकोड नाम जोड़कर जैसेjoin("|",array("one_third", "team_member", "next_one", "another_one", "one_more"));
बोरक

... समर्थक डेवलपर ने कहा, अच्छा किया। Upvoting।
फ्यूजन

FYI यह तभी काम करता है जब पृष्ठ को देखा जाता है। हालाँकि, आपके संपादक में आप हमेशा की तरह अवांछित <p> का और <br> <br> देख सकते हैं।
मार्संडबैक

13

wpautop()समारोह कहते हैं <p>और <br>क्रम में अपनी सामग्री के लिए टैग लाइन ब्रेक संरक्षित करने के लिए। यदि आप इन टैगों को स्वयं जोड़ना चाहते हैं, तो आप उन फ़िल्टर को हटा सकते हैं जो इस फ़ंक्शन को पोस्ट सामग्री पर लागू करते हैं:

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

यदि आप स्वचालित पैराग्राफ निर्माण ( <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' );

यदि आपको यह पता नहीं है कि यह कोड कहां रखा गया है, तो इस लिंक को देखें ।


3

प्लगइन स्थापित करें "मेरा मार्कअप मत करो"।

यह प्रत्येक पेज के ऑटो प्रविष्टि <p>और <br>टैग को अक्षम करने के लिए एक चेकबॉक्स विकल्प जोड़ता है ।

इस साइट को करने के लिए एक विकल्प भी है।


1

संभवत: यह टेक्स्ट एडिटर है जो गड़बड़ी करता है। यह जो मैंने किया है:

मैं TinyMCE का उपयोग करता हूं। टेक्स्ट एडिटर के लिए सेटिंग्स के तहत, मैंने अनचेक किया "सेव करने पर" <p> "और" <br /> "टैग हटाना बंद करें और उन्हें HTML एडिटर में दिखाएं। मेरे लिए काम किया।


0

हो सकता है कि आप आसानी से उपयोग कर सकते हैं do_shortcode()यदि आपके पास आपकी सामग्री में सभी शॉर्टकोड हैं, जब तक आपके पास कोई अन्य सामग्री नहीं है जो फ़िल्टर की आवश्यकता है।

मैं संदर्भ नहीं जानता, लेकिन अगर आप पाश में हैं:

echo do_shortcode($post->post_content);


0

Borek का जवाब मेरे उपयोग के मामले में काम नहीं करता था, जो कच्चे HTML लिख रहा है।

उसके लिए मैंने कोड स्निपेट प्लगइन का उपयोग किया (आपको आसानी से मनमाने ढंग से PHP स्निपेट जोड़ने की सुविधा मिलती है) जो एक [html][/html]शोर्ट के लिए एक स्निपेट बनाने के लिए है । इस शोर्ट के बारे में क्या अच्छा है कि यह टॉगल- wpautop प्लगइन के साथ संगत है जो आपको संपूर्ण पोस्ट पर <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

यह फ़ंक्शन केवल <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');

यह भी है, जिसमें सभी मामलों को प्रभावित करता है [और ]कर रहे हैं नहीं एक शोर्ट कॉल के हिस्से के रूप में इस्तेमाल किया।
FUXIA

0

उन लोगों के लिए जो कोड हैक से परिचित नहीं हैं या प्लग इन का उपयोग नहीं करना चाहते हैं, आप ऐसा कर सकते हैं।

1) WP पृष्ठों (पाठ संपादक) से सभी वर्तमान कोड की प्रतिलिपि बनाएँ यहाँ छवि विवरण दर्ज करें

2) फिर नोटपैड पर पेस्ट करें और संपादित करने की आवश्यकता जारी रखें (लघु कोड, HTML कोड या सीएसएस कोड जोड़ें)

3) WP पेजों (टेक्स्ट एडिटर) पर नोटपैड से एक ही स्क्रिप में कॉपी पेस्ट

4) हिट [UPDATE] बटन जो पृष्ठों को प्रकाशित करने के लिए समान WP पृष्ठों के दाईं ओर स्थित है

यहाँ छवि विवरण दर्ज करें

5) अंत में इसका लाइव साइट पर पूर्वावलोकन करें

इस विशेष पृष्ठ के लिए चाल यहाँ [विज़ुअल एडिटर] पर वापस नहीं जाती है, फिर [p] या [br] के लिए ऑटो एपेंड होता है।


-3

एक बहुत ही सरल उपाय: वर्डप्रेस एडिटर में नई लाइनों का उपयोग न करें। हां, नई लाइनें स्पष्ट करती हैं। हालांकि, इस मामले में कोई भी विराम अभी भी स्वीकार्य रूप से समझ में नहीं आ सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.