আমি ওয়ার্ডপ্রেসে মার্কআপের জন্য স্ব-সমাপনী ট্যাগগুলি কীভাবে বন্ধ করব (উদাহরণস্বরূপ, এইচটিএমএল 5, বা এইচটিএমএল 4)?


18

আমি আমার ওয়ার্ডপ্রেস থিমটিতে এইচটিএমএল 5 ব্যবহার করতে চাই, আমি কীভাবে wptexturize বন্ধ করব?

আমি ডাব্লুপি ব্রেক বিরতিতে কিছু মনে করি না, তবে আমি চাই যে সেগুলি হয় <br>এবং না হয় <br />। এই কোডগুলি কীভাবে আমার কোডটিতে প্রদর্শিত হবে তার উপর আমি কীভাবে নিয়ন্ত্রণ পেতে পারি?

সম্পাদনা: আমি কেবল <br>ট্যাগ ইস্যু সম্পর্কে সত্যিই যত্নশীল , এটি টাইপোগ্রাফিক পরিবর্তনগুলি করে তাতে আমার আপত্তি নেই।

সম্পাদনা 2: আসলে, আমি <img>ট্যাগগুলি খুব গুরুত্বপূর্ণ বলে মনে করি। যে কোনও স্ব-সমাপনী একক ট্যাগগুলি এখানে গুরুত্বপূর্ণ। সুতরাং, <hr>পাশাপাশি একটি সমস্যা হতে পারে। wp_head()যেমন <link>এবং বিভিন্ন <meta>ট্যাগ হিসাবে আইটেম উল্লেখ না ।


1
এর সাথে কি হয়েছে <br />?
স্কট এম

2
এটি ঠিক আছে, তবে আমি যদি এইচটিএমএল 5 এর নন-এক্সএমএল সংস্করণটি আঁকতে চাই তবে আমি এক্সএমএল-স্টাইলের `/> ings শেষ চাই না।
আর্টল্যাং

আমি ভেবেছিলাম <br /> বৈধ এইচটিএমএল এবং এক্সএইচটিএমএল? কখন ছিল না?
রায়ান গিবনস

5
আমি বিশ্বাস করি এই প্রশ্নটি অত্যন্ত বিভ্রান্তিকর। wptexturize কোনও উপায়েই কোনও সাইটকে এইচটিএমএল 5 এর অনুগত হতে বাধা দেয় না।
রায়ান গিবনস

2
কেউ দয়া করে "ওয়ার্ডপ্রেস-উত্পাদিত মার্কআপে স্ব-সমাপনকারী উপাদানগুলি থেকে ট্রেলিং-স্ল্যাশগুলি কীভাবে সরিয়ে ফেলব" এর পাতায় এটি পুনরায় শিরোনাম করতে পারেন?
ববি জ্যাক

উত্তর:


21

লাইন ব্রেকগুলি যোগ করেছে wpautop(), নয় wptexturize()wpautop()এটি এমন ফাংশন যা স্বয়ংক্রিয়ভাবে অনুচ্ছেদে ট্যাগ যুক্ত করে।

আপনি <br />ফিল্টারটি প্রতিস্থাপন করছেন তার চেয়ে ঠিক করার চেয়ে আপনি ভাল । যেহেতু wpautop()অগ্রাধিকার 10 এ রান হয়, আপনি কেবল তার পরে ঠিক করতে পারেন এবং এটি ঠিক করতে পারেন।

add_filter( 'the_content', 'html5_line_breaks', 25 );

function html5_line_breaks( $content ) {
    return str_replace( '<br />', '<br>', $content );
}

ওপি আপডেটের পরে সম্পাদনা করুন:

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

এটি কিছুটা কুরুচিপূর্ণ এবং পারফরম্যান্সে সামান্য প্রভাব ফেলতে পারে তবে আপনি এখানে যান (এটি একটি প্লাগইন বা আপনার থিমের functions.phpফাইলে ফেলে দিন):

if ( !is_admin() && ( ! defined('DOING_AJAX') || ( defined('DOING_AJAX') && ! DOING_AJAX ) ) ) {
    ob_start( 'html5_slash_fixer' );
    add_action( 'shutdown', 'html5_slash_fixer_flush' );
}

function html5_slash_fixer( $buffer ) {
    return str_replace( ' />', '>', $buffer );
}

function html5_slash_fixer_flush() {
    ob_end_flush();
}

এই কোডটি বলে যদি আপনি প্রশাসনের ক্ষেত্রের না থাকেন এবং একটি এজেএক্স অনুরোধ হ্যান্ডলিং না করে থাকেন তবে একটি ফিল্টারের মাধ্যমে আউটপুটটি বাফারিং শুরু করুন এবং তারপরে ওয়ার্ডপ্রেস শাটডাউন হুক ব্যবহার করুন that বাফারটিকে আউটপুট দিন।


আমার কাছে এখনও ওপেন ফাংশন.এফপি ক্র্যাক করার সময় হয়নি, তবে আপনি যদি ব্লকটি যান তবে আপনি এখানে বিস্তারিত বর্ণনা করতে পারেন? আমি একবার ফাইলটি খোলার সুযোগ পেলে এটি স্পষ্ট হয়ে উঠতে পারে, তবে আমি মনে করি আমি প্রশ্নটি বাইরে নিয়ে যাব।
টমাস ওপেন

@ থমাস: আপনার থিমের functions.phpফাইল ঠিক একটি প্লাগইন ফাইলের মতো। সেখানে যে কোনও কোড স্বয়ংক্রিয়ভাবে কার্যকর করা হবে। এটি কার্যকর পিএইচপি হিসাবে যতক্ষণ এটি যায় সেখানে কিছু যায় আসে না।
ভাইপার 1007বোন

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

8

আপনি এখানে যান:

function my_awesome_tag_fixer( $input ){
  return preg_replace( '/(<.+)\s\/>/', '$1>', $input );
}

foreach( array('the_content', 'the_excerpt', 'comment_text') as $filter )
  add_filter( $filter, 'my_awesome_tag_fixer', 12 );

এটি সর্বাধিক মার্জিত সমাধান নয়, তবে এটি wpautop এবং wptexturize পুনরায় লেখার চেয়ে অনেক দ্রুত সম্পন্ন হয়েছে।


1
+1 আমি এইচটিএমএল 4.01 কঠোর সম্মতিতে খুব অনুরূপ কিছু করেছি।
ট্রেভর ব্র্যাম্বল

7

সবেমাত্র এটি পাওয়া গেছে; অকার্যকর উপাদানগুলিতে স্ব-সমাপন ট্যাগগুলি বৈধ এইচটিএমএল।

In HTML5 we've allowed the / on void elements (like <meta>, <img>, <br>, <input>, etc), to ease migration to and from XML.

http://lists.whatwg.org/pipermail/help-whatwg.org/2008-August/000137.html

আরও তথ্য:

http://wiki.whatwg.org/wiki/FAQ#Should_I_close_empty_elements_with_.2F.3E_or_.3E.3F


1
"তবে, এক্সএইচটিএমএল 1 ব্যবহারের ব্যাপক প্রচেষ্টার কারণে, এখানে পিছনের স্ল্যাশ ব্যবহার করে উল্লেখযোগ্য সংখ্যক পৃষ্ঠাগুলি রয়েছে this এর কারণে, এক্সএইচটিএমএল 1 থেকে এইচটিএমএল 5 তে স্থানান্তর সহজ করার জন্য এইচটিএমএল-এ অকার্যকর উপাদানগুলিতে ট্রেইলিং স্ল্যাশ সিনট্যাক্সের অনুমতি দেওয়া হয়েছে। " উত্তরাধিকার হিসাবে অনুমোদিত আমি মনে করি এগিয়ে যাওয়ার পথটি অতিরিক্ত "/" খনন করছে, এভাবে আমার প্রশ্ন question আমি মনে করি ওয়ার্ডপ্রেসকে এক্সএইচটিএমএল, বা এইচটিএমএল ৪.০১ বা এইচটিএমএল 5 কোড তৈরি করার বিকল্পটির অনুমতি দেওয়া দরকার।
আর্টলং

আপনি যে সমস্যাটি পড়ছেন তা সেই সমস্যা ট্রেলিং স্ল্যাশ অনুমোদিত, যার অর্থ এটি বৈধ সিনট্যাক্স। আপনি অনুমান করছেন যে এটি সরানো হবে? কেন অনুমান করা হচ্ছে যেখানে মানগুলি চলেছে এবং কোন অস্তিত্ব নেই এমন সমস্যা সমাধানের জন্য কাজ তৈরি করবে?
রায়ান গিবনস

আমি কিছু নিয়ে জল্পনা করছি না। আমি কিছুই অনুমান করছি না। স্পেকের দ্বারা / চিহ্নটির প্রয়োজন হয় না, এবং আমি এটি ওয়ার্ডপ্রেসে অপসারণ করতে চাই।
আর্টলং

আমি এক্সএইচটিএমএল পছন্দ করি, আমাদের কি পুরানো এইচটিএমএলটির বিশৃঙ্খল চেহারাতে ফিরে যেতে হবে?
অ্যারলেন বেলার

অ্যারলেন, আমি অর্ডলি এইচটিএমএল পছন্দ করি, আমি এক্সএইচটিএমএল পছন্দ করি। আমি ভ্যালিডেটরদের একটি বড় অনুরাগী। আমি নিজের কোডটিতে বৈধতা দেওয়ার জন্য আমার নিজস্ব ডক্টাইপ লিখেছি। আমি এইচটিএমএল 3.2, এইচটিএমএল 4, 4.01, এমনকি এইচটিএমএল 2.0 ব্যবহার করেছি! ল্যাব.আর্টলং.এইচটিএমএল ২.০ - তবে আমি ওয়ার্ডপ্রেসে স্ব-সমাপনী ট্যাগগুলি অপসারণের বিকল্পটি চাই। এটি এত বড় ব্যাপার হওয়া উচিত বলে মনে হয় না। আমি মনে করি আমার প্রশ্নের ভিত্তিটি নিয়ে তর্ক করা খুব অস্বাস্থ্যকর।
আর্টলং

6

এটি উদাহরণস্বরূপ থিমের ফাংশন.এফপি ফাইলটিকে ফাংশনটির সুবিধা গ্রহণ করে অক্ষম করা যেতে পারে remove_filter()(http://codex.wordpress.org/Function_References/remove_filter)

remove_filter("the_content", "wptexturize");

1
আমি কি এর উপর আরও দানাদার নিয়ন্ত্রণ পেতে পারি? আমি যদি এভাবে টাইপোগ্রাফিক চিহ্নগুলি না করি তবে কী হারাবো না?
আর্টলং

আমি আমার মাথার উপরের দিক থেকে সরল কোনও পদ্ধতির বিষয়ে অবগত নই, তবে আমি আপনাকে দেখতে পাচ্ছি কি তা দেখতে দিন।
থমাসজো

পাওয়া কাঙ্ক্ষিত কার্যকারিতা পুনরুত্পাদন করার সংক্ষিপ্ততা wptexturize(), আমি অন্য কোনও কার্যকর সমাধান খুঁজে পেতে অক্ষম।
থমাসজো

আমি ভাবছি যদি এমন কোনও উপায় থাকে যা কেবল উল্টো করে দেয় <br />- <br>সম্ভবত তাদের সাথে প্রতিস্থাপন করুন ?
আর্টলং

5

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

/**
 * wpautop for HTML5, allowed: table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)
 * @link http://nicolasgallagher.com/using-html5-elements-in-wordpress-post-content/
 * @author nicolas@nicolasgallagher.com
 */
function html5wpautop($pee, $br = 1) {
    if ( trim($pee) === '' )
            return '';

    $pee = $pee . "\n"; // just to make things a little easier, pad the end
    $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
    // Space things out a little
    // *insertion* of section|article|aside|header|footer|hgroup|figure|details|figcaption|summary
    $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)';
    $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
    $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
    $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
    if ( strpos($pee, '<object') !== false ) {
            $pee = preg_replace('|\s*<param([^>]*)>\s*|', "<param$1>", $pee); // no pee inside object/embed
            $pee = preg_replace('|\s*</embed>\s*|', '</embed>', $pee);
    }
    $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
    // make paragraphs, including one at the end
    $pees = preg_split('/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
    $pee = '';
    foreach ( $pees as $tinkle )
            $pee .= '<p>' . trim($tinkle, "\n") . "</p>\n";
    $pee = preg_replace('|<p>\s*</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
    // *insertion* of section|article|aside
    $pee = preg_replace('!<p>([^<]+)</(div|address|form|section|article|aside)>!', "<p>$1</p></$2>", $pee);
    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag
    $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
    $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
    $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    if ($br) {
            $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', create_function('$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);'), $pee);
            $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
            $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
    }
    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    // *insertion* of img|figcaption|summary
    $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol|img|figcaption|summary)[^>]*>)!', '$1', $pee);
    if (strpos($pee, '<pre') !== false)
            $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
    $pee = preg_replace( "|\n</p>$|", '</p>', $pee );

    return $pee;
}

// remove the original wpautop function
remove_filter('the_excerpt', 'wpautop');
remove_filter('the_content', 'wpautop');

// add our new html5autop function
add_filter('the_excerpt', 'html5wpautop');
add_filter('the_content', 'html5wpautop');

এইচটিএমএল 5 স্টার্টার থিমের এসএনএন- তে আরও দেখুন , কোনও কাঠামো নয়!


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.