# কনটেন্ট থেকে খালি অনুচ্ছেদগুলি সরাবেন?


33

ওহে ছেলেরা, আমি কেবল আমার ওয়ার্ডপ্রেস পোস্টে খালি অনুচ্ছেদ তৈরি করা আটকাতে চাই। ম্যানুয়ালি স্পেস কন্টেন্ট করার চেষ্টা করার সময় এটি প্রায়শই ঘটে।

আমি জানি না কেন এটি কার্যকর হয় না?

/*Remove empty paragraph tags from the_content*/
function removeEmptyParagraphs($content) {

    /*$pattern = "/<p[^>]*><\\/p[^>]*>/";   
    $content = preg_replace($pattern, '', $content);*/
    $content = str_replace("<p></p>","",$content);
    return $content;
}

add_filter('the_content', 'removeEmptyParagraphs');

সম্পাদনা / আপডেট:

সমস্যাটি মনে হচ্ছে এটি হ'ল:

function qanda($content) {

    // filters for [q=some question] and [a=some answer]
    // wraps it inside of <div class="qanda"><div class="question"> </div><div class="answer"> </div></div>
    $content = preg_replace('/\[q=(.+?)].+?\[a=(.+?)]/is', '<div class="qanda"><div class="question">$1</div><div class="answer">$2</div></div>', $content);

    return $content;
}

add_filter('the_content', 'qanda');

আমার পোস্ট এবং পৃষ্ঠাগুলিতে এক ধরণের শর্টকোড প্যাটার্ন ফিল্টার করার জন্য আমি নিজেই এই ফাংশনটি করেছি। যদিও আমার ব্যাকএন্ডে পোস্টটি অনুচ্ছেদ এবং অপ্রয়োজনীয় স্পেসিং ব্যতীত সম্পূর্ণভাবে সম্পন্ন হয়েছে ফলাফলটি এর মতো দেখাচ্ছে:

<div class="entry">

    <p></p>
    <div class="qanda">...</div>
    <p></p>
    <p></p>
    <div class="qanda">...</div>
    <p></p>
    <p></p>
    <div class="qanda">...</div>

</div>

এই ধারণাটি কোথা থেকে এসেছে?



1
wpautopএটি করার আগে আপনার ফিল্টারটি চালানোর চেষ্টা করুন , যেমন। add_filter('the_content', 'qanda', 7 );..
t31os

@ t31os: আপনি কি আপনার মন্তব্যে কোনও উত্তরে সরিয়ে নিতে পারেন যাতে আমরা এতে ভোট দিতে পারি?
জান ফ্যাব্রি

উত্তর:


20

ওয়ার্ডপ্রেস স্বয়ংক্রিয়ভাবে সন্নিবেশ করিয়ে দেবে <p>এবং </p>ট্যাগগুলি পৃথক করে যা কোনও পোস্ট বা পৃষ্ঠার মধ্যে পৃথক সামগ্রী বিভক্ত হয়। যদি কোনও কারণে আপনি এগুলি সরাতে চান বা প্রয়োজন হয় তবে আপনি নিম্নলিখিত কোড স্নিপেট ব্যবহার করতে পারেন।

Wpautop ফিল্টারটি সম্পূর্ণ অক্ষম করতে, আপনি ব্যবহার করতে পারেন:

remove_filter('the_content', 'wpautop');

আপনি যদি এখনও এটি কাজ করতে চান তবে আপনার ফিল্টারটিতে পরবর্তী অগ্রাধিকারের মান যুক্ত করার চেষ্টা করুন:

add_filter('the_content', 'removeEmptyParagraphs',99999);

2
ধন্যবাদ! আমি জানি ওয়ার্ডপ্রেস স্বয়ংক্রিয়ভাবে পি ট্যাগ সন্নিবেশ করায়। তবে এমন কিছু ঘটনা ঘটেছে যেখানে আমার কন্টেন্টের কোথাও খালি <p> </p> ট্যাগ রয়েছে (যখন আমি এটি কোনও সরঞ্জাম দিয়ে পরীক্ষা করি) ... এটি অনেকগুলি পোস্ট অপসারণ এবং সম্পাদনা করার সময় ঘটে happens আমি কেবল আমার সামগ্রীতে খালি অনুচ্ছেদ রাখতে চাই না, এগুলিই। আমার অনুচ্ছেদের দরকার, খালি খালি নয়। 99999 কোনও পার্থক্য করে না। শুধু কাজ করে না। wpautop ফিল্টার আমি যা চাই তা নয়। এটি সমস্ত <p> এর এবং স্বতঃরূপকরণ প্রতিরোধ করে। আমি শুধু কোন খালি পি চাই না!
mathiregister

আমি আমার পোস্ট আপডেট করেছি যাতে আপনি দেখতে পাচ্ছেন আমার অর্থ কী! আমি এমন একটি ফাংশন করেছি যা ইতিমধ্যে সামগ্রীটি ফিল্টার করে। এটি ডিভগুলি সন্নিবেশ করায় এবং দেখে মনে হয় যে ওয়ার্ডপ্রেসটি এর আগে এবং পরে <p> </p> সন্নিবেশ করছে, আমি কেবল এটি পাই না। কোন ধারনা?
mathiregister

21

আপনারও আমার একই সমস্যা ছিল। আমি কেবল একটি করেছি ... আসুন বলি ... খুব সুন্দর সমাধান নয়, তবে এটি কাজ করে এবং এখনও পর্যন্ত এটি আমার কাছে একমাত্র সমাধান solution আমি কিছুটা জাভাস্ক্রিপ্ট লাইন যুক্ত করেছি। এটি jQuery প্রয়োজন, তবে আমি নিশ্চিত যে আপনি এটি ছাড়াই এটি বের করতে পারবেন।

এটি আমার ক্ষুদ্র জেএস:

$('p:empty').remove();

এটি আমার পক্ষে কাজ করে!


ওহ আইন্ট যে একটি মিষ্টি সামান্য সংখ্যা! টিপটির জন্য ধন্যবাদ - এটি আমার পক্ষে কাজ করে এবং অন্য কেউ যদি কীভাবে এটি ব্যবহার করবেন তা ভেবে অবাক হন, কেবল আপনার থিমের কাস্টম জেএস ফাইলটিতে রাখুন।
سول

11
আপনি সিএসএসের সাহায্যে এটিও করতে পারেন:p:empty { display:none; }

@ ডি_এন খালি অনুচ্ছেদ ট্যাগগুলি লুকানোর জন্য সিএসএস ব্যবহার করে <p></p>কেবল এটির জন্য কাজ করে তবে এটি কাজ করে না <p>\n</p>
মাইকেল একল্যান্ড

11

আমি জানি এটি ইতিমধ্যে 'সমাধান' হিসাবে চিহ্নিত হয়েছে তবে কেবলমাত্র রেফারেন্সের জন্য, এখানে একটি ফাংশন রয়েছে যা পোস্টগুলিতে কোনও মার্কআপ যুক্ত না করে আপনি যা চান ঠিক তা করে। এটি কেবল আপনার থিমের ফাংশন.এফপিতে রাখুন:

add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content){
    $content = force_balance_tags($content);
    return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content);
}

এটি এই সংক্ষিপ্তসার থেকে: https://gist.github.com/1668216


6
ফোর্স_বেলেন্স_ট্যাগগুলি () ব্যবহার করার বিষয়ে কেবলমাত্র একটি ছোট্ট নোট ... আমি যখন জাভাস্ক্রিপ্ট অন্তর্ভুক্ত সামগ্রীগুলিতে ব্যবহার করতাম তখন এই ফাংশনটির ফলে সৃষ্ট একটি কৃপণ ত্রুটি ছুঁড়ে ফেলা হয় (ফর্মের মধ্যে এজাজ ব্যবহার করার সময় জেএস গ্রেভিটি ফর্মগুলি থেকে আসছিল)। force_balance_tagsএটি <নির্দিষ্ট পরিস্থিতিতে যখন চরিত্রটির সাথে মুখোমুখি হয় তখন সেখানে ज्ञात সমস্যাগুলি রয়েছে । বিশদ বিবরণের জন্য টিকিট দেখুন [9270] ( কোর.ট্রাক.ওয়ার্ডপ্রেস.আর. / টিকেট / ৯২০০ )
ডেভ রোমি

ডেভের দ্বারা হাইলাইট করা আমার একই সমস্যা ছিল: স্নিপেটটি এম্বেড করা ইউটিউব ভিডিও সরিয়ে ফেলল এবং এটি অ্যাম্প পৃষ্ঠাগুলিতেও বৈধতা সমস্যা তৈরি করেছিল।
মার্কো পানিচি

11

কেবল সিএসএস ব্যবহার করুন

p:empty {
  display: none;
}

দয়া করে আপনার উত্তরে একটি ব্যাখ্যা যুক্ত করুন
পিটার গুসেন

4
@ পিটারগোজেন এটি ইতিমধ্যে স্ব-ব্যাখ্যামূলক
কমপক্ষে তিনটি অক্ষর

যদি আপনি কেবল ব্যবধানের উদ্দেশ্যে এগুলি প্রদর্শন করা এড়াতে চান তবে এটি IE9 এ ভালভাবে কাজ করে। caniuse.com/#feat=css-sel3 এবং developer.mozilla.org/en-US/docs/Web/CSS/%3Ampty for more।
উইল

1
সিএসএস সিলেক্টর পদ্ধতি সহ দুর্দান্ত বিকল্প, জানেন না এটির অস্তিত্ব রয়েছে। ধন্যবাদ!
i_a

1
এফওয়াইআই: &nbsp;<p> ট্যাগের ভিতরে থাকলে এটি কাজ করবে না।
RynoRn

5

আপনি wpautopএই ছদ্মবেশী হুক চালু হওয়ার আগে এবং ফিল্টারটি মার্কআপের সাথে মেসেজ করার আগেই আপনার ফিল্টারটি চালাতে পারবেন ।

add_filter('the_content', 'qanda', 7 );

এইভাবে, আপনি যা প্রয়োজন তার আগেই আপনি যা প্রয়োজন তা ইতিমধ্যে রূপান্তর করেছেন, যা কিছু ক্ষেত্রে সহায়তা করে।


3

আমার আগে 2 টিরও বেশি উত্তর একই রকম, তবে একটি আপডেট করা রেজেক্স, কারণ তিনি আমার পক্ষে কাজ করেন নি।

রেজেক্স: /<p>(?:\s|&nbsp;)*?<\/p>/i (নন ক্যাপচার গ্রুপ &nbsp;, পি-ট্যাগের অভ্যন্তরে যে কোনও শ্বেত স্পেস বা গুলি এর সংখ্যার সন্ধান করছে , সমস্ত ক্ষেত্রে সংবেদনশীল।

add_filter('the_content', function($content) {
    $content = force_balance_tags($content);
    return preg_replace('/<p>(?:\s|&nbsp;)*?<\/p>/i', '', $content);
}, 10, 1);

0

আমি এই অদ্ভুত পেয়েছি, কিন্তু প্রকৃতপক্ষে কল the_content()করা আপনার বর্ণনার মতো অনুচ্ছেদে সন্নিবেশ করবে। আপনি যদি এইচটিএমএল কোডটি চান তবে মূলত আপনি যেমন এটি প্রবেশ করিয়েছিলেন (সম্পাদনা করার সময় "এইচটিএমএল দেখুন" এর সমান), তারপরে get_the_content()বিন্যাস এবং অনুচ্ছেদ ট্যাগ ব্যতীত কোন সামগ্রীটি ফেরত দেয় তা ব্যবহার করুন ।

যেহেতু এটি এটিকে ফেরত দেয় তাই নিশ্চিত করুন যে আপনি এমন কিছু ব্যবহার করেছেন:

প্রতিধ্বনি get_the_conte ();

আরও দেখুন: http://codex.wordpress.org/Function_References/get_the_content


ভালো ধন্যবাদ. তবে আমি তা চাই না! আমার স্বাভাবিক অনুচ্ছেদ দরকার। এটির প্রথমে শব্দার্থক মার্কআপ এবং দ্বিতীয়ত এটি ঠিক এটির মতো। আমার কেবল খালি অনুচ্ছেদগুলি থাকা উচিত নয় যা বোঝায় না! কেবলমাত্র আমি সেই অনুচ্ছেদে স্টাইলিং প্রয়োগ করেছি বলে খালি অনুচ্ছেদগুলিও এই স্টাইলিংয়ের সাথে উপস্থিত হয় এবং আমার পৃষ্ঠাটি অদ্ভুত দেখাচ্ছে।
mathiregister

আমি ভাবছি আমার অ্যাড_ ফিল্টার জিনিসটি কেন কাজ করে না?
mathiregister

Gotcha। আমি যা চেষ্টা করব তা হ'ল এইচটিএমএল থেকে ভিজ্যুয়ালে ফিরে যাওয়া এবং দু'একবারের জন্য ফিরে আসার। আমি বিশ্বাস করি যখন ডাব্লুওয়াইএসআইডাব্লুওয়াইজি সম্পাদক লোড হয় এটি খালি অনুচ্ছেদ ট্যাগগুলি সরিয়ে দেয়।
সিডব্লিউডি

0

এটি স্ট্রিং থেকে বার বার খালি এইচটিএমএল ট্যাগ সরিয়ে ফেলবে

add_filter('the_content', 'remove_empty_tags_recursive', 20, 1);
function remove_empty_tags_recursive ($str, $repto = NULL) {
         $str = force_balance_tags($str);
         //** Return if string not given or empty.
         if (!is_string ($str)
         || trim ($str) == '')
        return $str;

        //** Recursive empty HTML tags.
       return preg_replace (

              //** Pattern written by Junaid Atari.
              '/<([^<\/>]*)>([\s]*?|(?R))<\/\1>/imsU',

             //** Replace with nothing if string empty.
             !is_string ($repto) ? '' : $repto,

            //** Source string
           $str
);}

প্যাটার্ন থেকে নেওয়া হয় http://codesnap.blogspot.in/2011/04/recursively-remove-empty-html-tags.html


0

আপনার যদি <p>সামগ্রীতে হোয়াইটস্পেসের সাথে ট্যাগ থাকে তবে আপনার পোস্টে যান বা কোনও সম্পাদনা পৃষ্ঠাতে এটি ভিজ্যুয়াল স্টাইলে নয়।

আপনি &nbsp;সেখানে কিছু খুঁজে পেতে পারেন .. এটি মুছুন এবং খালি <p>ট্যাগগুলি অদৃশ্য হয়ে যাবে।


0

যাতে ছাড়া কেবল এইচটিএমএল সামগ্রী থাকতে পারে

ট্যাগগুলি আমরা পোস্ট বা পৃষ্ঠার বিন্যাস ছাড়াই কেবল এইচটিএমএল রাখার জন্য নিম্নলিখিত লুপটি ব্যবহার করতে পারি

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_title(); ?>
<?php echo $post->post_content; ?>
<?php endwhile; endif; ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.