টিনিএমসিই সম্পাদক আমার সুন্দর এইচটিএমএল ভেঙে দিচ্ছে


9

এটি বেশ হুবহু ডুপ্লিকেট এটি: কীভাবে ওয়ার্ডপ্রেস এবং টিনিএমসিএল <a> ট্যাগগুলিকে HTML5 তে অনুমোদিত হিসাবে ব্লক-স্তরের উপাদানগুলিকে মোড়ানো করতে হবে? এবং এইচটিএমএল 5, ওয়ার্ডপ্রেস এবং ক্ষুদ্র এমসিই সমস্যা - চারপাশে অ্যাঙ্কর ট্যাগ মোড়ানো ফানির আউটপুট ফলাফল

আমার সমস্যাটি হ'ল প্রস্তাবিত সমাধান ( tiny_mce_before_initফিল্টার) আমার সমস্যার সমাধান বলে মনে হচ্ছে না। আমার মতো এইচটিএমএল রয়েছে যা দেখতে:

<a href="#">
    <img src="path/to/file.jpg" />
    <p>Some amazing descriptive text</p>
</a>

এইচটিএমএল 5 এ পুরোপুরি আইনী। তবে ডাব্লুপি সম্পাদক এটিকে পছন্দ করেন না এবং এটিকে রূপান্তরিত করেন:

<a href="#">
    <img src="path/to/file.jpg" />
</a>
<p>Some amazing descriptive text</p>

এটি অবশ্যই আমার লেআউটটি ভঙ্গ করে। কেউ কি এমন উপায় জানে যে আমি এই আচরণটি আটকাতে পারি? আমি সম্পাদকের ভিজ্যুয়াল উপাদানটি ছেড়ে দিতে এবং সরল পাঠ্যে আটকে রাখতে পারি না । কোন পরামর্শ স্বাগত।

কেবল স্পষ্ট করে বলতে গেলে, আমি যখন নীচের কোডটি ব্যবহার করি ( এখানে প্রস্তাবিত ), <p>ট্যাগগুলিকে অ্যাঙ্করগুলির মধ্যেই থাকতে দেওয়া হয় তবে একটি অস্তিত্বের সাথে প্রচুর পরিমাণে অতিরিক্ত স্থান যুক্ত করা হয় &nbsp;যা আপনি ভিজুয়াল এবং পাঠ্য মোডের মধ্যে স্যুইচ করার সময় বাড়িয়ে দেয়।

add_filter('tiny_mce_before_init', 'modify_valid_children');

function modify_valid_children($settings){
    $settings['valid_children']="+a[div|p|ul|ol|li|h1|h2|h3|h4|h5|h5|h6]";
    return $settings;
}

আপনি ডোমিনিক না থাকলে এই প্লাগইনটি ব্যবহার করে দেখুন ... এটির মাঝে মাঝে বা এখানে আপডেটগুলি নিয়ে একটি সমস্যা উপস্থিত থাকে তবে বেশিরভাগ অংশের জন্য এটি আপনাকে কীভাবে প্রত্যাশা করবেন তা পুরোপুরি এইচটিএমএল ব্যবহার করতে দেয়। wordpress.org/plugins/premitted-html-editor-markup-plus
ব্রায়ান উইলিস

উত্তর:


17

আপনি বৈধ শিশু হিসাবে যা কনফিগার করেছেন তা নির্বিশেষে, ওয়ার্ডপ্রেস খুব সহজেই একটি অনন্য উপায়ে পি ট্যাগ পরিচালনা করে পাশাপাশি লাইন ব্রেকগুলি পরিচালনা করে। আপনি সম্ভবত অবশেষে লক্ষ্য করবেন, যদি আপনি ইতিমধ্যে না পেয়ে থাকেন তবে পাঠ্য সম্পাদক থেকে ভিজ্যুয়াল সম্পাদকটিতে স্যুইচ করার সময় এবং পিছনে আপনার <p>ট্যাগগুলি ছাঁটাই হয়ে যায়, সীমান্তে যা ঘটেছিল তার অনুরূপ। এটি হতে বাধা দেওয়ার উপায় <p>ট্যাগগুলিকে একটি কাস্টম ক্লাস দেওয়া class

<p class="text">This p tag won't get removed"</p>

যদিও এটি your আপনার পি ট্যাগটি ছিনিয়ে নেওয়া থেকে বিরত রাখবে, তবুও এটি আপনার সমস্যার সমাধান করবে না যেহেতু সীমান্তে আপনার মার্কআপটি এখনও মিশে যায়। আপনি wpautop অক্ষম করতে পারে । যদি আপনি এটি করেন এবং বৈধ বাচ্চাদের মধ্যে পি অন্তর্ভুক্ত করেন, তবে এটি আপনার সমস্যা ঠিক করবে

বিকল্প 1: অটোপ অক্ষম করুন এবং কার্যকর শিশুদের সেট করুন

remove_filter( 'the_content', 'wpautop' );
add_filter('tiny_mce_before_init', 'modify_valid_children', 99);
function modify_valid_children($settings){     
    $settings['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
    return $settings;
}

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


বিকল্প 2: অটো পি, টিনিএমসিই, এবং বৈধ শিশুদের সেট করুন অক্ষম করুন

remove_filter( 'the_content', 'wpautop' );
add_filter('tiny_mce_before_init', 'modify_valid_children', 99);
function modify_valid_children($settings){     
    $settings['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
    return $settings;
}
add_filter('user_can_richedit', 'disable_wyswyg_to_preserve_my_markup');
function disable_wyswyg_to_preserve_my_markup( $default ){
  if( get_post_type() === 'post') return false;
  return $default;
}

যদিও বেশিরভাগ লোকেদের ক্ষেত্রে এই একটি বিকল্প হয় না।


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

বিকল্প 3: বিকল্প 1 + স্টাইলযুক্ত স্প্যান ট্যাগ

এইচটিএমএল

<a href="#"><img src="https://placehold.it/300x200?text=Don%27t+P+On+Me" alt="" /><span class="noautop">Some amazing descriptive text</span></a>

স্টাইলশিটে সিএসএস

.noautop {
    display: block;
}

বিকল্প 4: মিডিয়া আপলোডার শর্টকোডে বিল্ট ইন ব্যবহার করুন

শর্টকোড মিডিয়া আপলোডার

আমি প্রথমে এটি ভুলে গিয়েছিলাম, তবে [ক্যাপশন] শর্টকোডটি এর মতো দেখাবে:

[caption id="attachment_167" align="alignnone" width="169"]
    <img class="size-medium wp-image-167" src="http://example.com/example.png" alt="" width="169" height="300" />
    awesome caption
[/caption]

আউটপুটটি দেখতে এইরকম হবে:

<figure id="attachment_167" style="width: 169px" class="wp-caption alignnone">
    <img class="size-medium wp-image-167" src="http://example.com/example.png" alt="" width="169" height="300" />
    <figcaption class="wp-caption-text">Some amazing descriptive text</figcaption>
</figure>

আপনি যদি চিত্রের ট্যাগগুলি না চান তবে আপনি কাস্টম সামগ্রী শর্টকোডের মতো প্লাগইন ব্যবহার করতে পারেন যা আপনাকে এটি করতে দেয়:

[raw] <p>this content will not get filtered by wordpress</p> [/raw]

কেন আমি চাই যদিও সম্পাদক কাজ করতে পারেন না?

বিগত কয়েক বছর ধরে এটি ভালভাবে কাজ করার চেষ্টা করার জন্য আমি অগণিত ঘন্টা ব্যয় করেছি। মাঝে মাঝে আমি এমন একটি সমাধান নিয়ে আসব যা পুরোপুরি কার্যকর হয়, তবে তারপরে ওয়ার্ডপ্রেস এমন একটি আপডেটকে চাপ দেবে যা সমস্ত কিছু আবার মিস করে। এটির মতো সম্পূর্ণরূপে কাজ করার জন্য আমি খুঁজে পেয়েছি এমন একমাত্র সমাধান, আমাকে আমার সেরা উত্তরের দিকে নিয়ে যায়।

বিকল্প 5: সংরক্ষিত এইচটিএমএল সম্পাদক মার্কআপ প্লাস

তাই নিজেকে মাথা ব্যথা বাঁচান এবং এই সঙ্গে যান। ডিফল্টরূপে, সংরক্ষিত এইচটিএমএল সম্পাদক মার্কআপ প্লাস কেবলমাত্র নতুন পৃষ্ঠাগুলিকে প্রভাবিত করে। আপনি যদি ইতিমধ্যে তৈরি পৃষ্ঠাগুলি পরিবর্তন করতে চান তবে আপনাকে www.example.com/wp-admin/options-writing.php এ গিয়ে প্লাগইন সেটিংস সম্পাদনা করতে হবে। আপনি ডিফল্ট নিউলাইন আচরণটিও পরিবর্তন করতে সক্ষম হবেন।

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


অতিরিক্ত ক্রেডিট: আপনার সমস্যার ডিবাগিং / অন্যান্য টিনিএমসিই বিকল্পগুলি সম্পাদনা করা

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

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

টিনিএমসিই সম্পাদক editor

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

function fix_tiny_mce_before_init( $in ) {

    // You can actually debug this without actually needing Advanced Tinymce Config enabled:
    // print_r( $in );
    // exit();

  $in['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
    $in[ 'force_p_newlines' ] = FALSE;
    $in[ 'remove_linebreaks' ] = FALSE;
    $in[ 'force_br_newlines' ] = FALSE;
    $in[ 'remove_trailing_nbsp' ] = FALSE;
    $in[ 'apply_source_formatting' ] = FALSE;
    $in[ 'convert_newlines_to_brs' ] = FALSE;
    $in[ 'verify_html' ] = FALSE;
    $in[ 'remove_redundant_brs' ] = FALSE;
    $in[ 'validate_children' ] = FALSE;
    $in[ 'forced_root_block' ]= FALSE;

    return $in;
}
add_filter( 'tiny_mce_before_init', 'fix_tiny_mce_before_init' );

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

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


আমার উদাহরণ এইচটিএমএলে এই টাইপটি ধরার জন্য ধন্যবাদ (আমি প্রশ্নটি সম্পাদনা করেছি)। কেবল স্পষ্ট করে বলতে গেলে, আসল এইচটিএমএলটিতে সমস্যা নেই। আপনার উল্লিখিত প্লাগইনটি আমি চেকআউট করব।
ডোমিনিক পি

আশা করি এটি ডোমিনিককে সহায়তা করবে! একটি শেষ কথা আমি উল্লেখ করতে চাই তা হ'ল আপনি মিডিয়া আপলোডারের মাধ্যমে ওয়ার্ডপ্রেসে ক্যাপশন যুক্ত করতে পারেন। এছাড়াও, আমি বিশ্বাস করি যে শব্দার্থগতভাবে এটি করার সঠিক উপায়টি এরকম। w3schools.com/tags/tag_figcaption.asp
ব্রায়ান উইলিস

এটি একটি আকর্ষণীয় চিন্তা। আমি এটি একটি চিত্র এবং ক্যাপশন হিসাবে চিহ্নিত করা বিবেচনা করা হয়নি। আমি চেষ্টা করে দেব।
ডমিনিক পি

এই বন্ধ করতে। আমি <span>ট্যাগ ব্যবহার করে ক্ষতবিক্ষত । আমি ঘৃণা করি যে আমার মার্কআপটি এখন সাদা-স্থান নির্ভর, তবে এটি আপাতত ন্যূনতম প্রতিরোধের পথ ছিল। আমি চেষ্টা করেছি <figcaption>কিন্তু এটি একটি ব্লক স্তর উপাদান, এবং টিনিএমসিই <a>ট্যাগগুলি এটি মোড়ানোর অনুমতি দেয় না , তাই আমি আবার স্কোয়ারে ফিরে এসেছি। সমস্ত ধারণার জন্য আবার ধন্যবাদ।
ডোমিনিক পি

ডোমিনিক, আপনি যদি ব্যবহার করতে চান তবে উপরের বিকল্পটি চেক আউট করুন <figure>। আমি সম্পূর্ণরূপে ভুলে গেছি যে বিল্ট ইন ক্যাপশন শর্টকোডটি ডিফল্টরূপে এটি করে!
ব্রায়ান উইলিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.