ওয়ার্ডপ্রেস কখন সিডিএটাতে ইনলাইন স্ক্রিপ্টগুলি মোড়ায়?


11

আমি আমাদের একটি তৃতীয় পক্ষের স্ক্রিপ্টের সাথে একটি সমস্যা ডিবাগ করছি যা ওয়ার্ডপ্রেস ব্যবহারকারীরা তাদের পোস্টের বডিগুলিতে (অবশ্যই বাস্তবের অ-বাস্তব উদাহরণ) যেমন স্ক্রিপ্ট এবং এইচটিএমএলের একটি স্নিপেট কপি / পেস্ট করে ব্যবহার করেন:

<script>
window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } };
window.foobar.hello();
</script>

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

তবুও, স্ক্রিপ্টটি সিডিটিএতে মুড়িয়ে দেওয়ার সময় ব্যবহারকারীরা নিম্নলিখিত বাগটি দ্বারা কামড়ায়: https://core.trac.wordpress.org/ticket/3670 (সমাপনীটি >ভুলভাবে প্রতিস্থাপন করা হয়েছে &gt;) যা স্ক্রিপ্টের সামগ্রীটিকে উপেক্ষা করে ব্রাউজারকে নিয়ে যায় :

<script>// <![CDATA[  window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } }; window.foobar.hello();  // ]]&gt;</script>

আমি নিজে খুব বেশি ডাব্লুপি-ফু এর মালিক নই এবং গুগলিং আমাকে কেবল সমস্যাটি শনাক্ত করতে পরিচালিত করেছিল, তাই আমার প্রশ্নটি হবে: ওয়ার্ডপ্রেস কখন সিডিটিএ বিভাগে ইনলাইন স্ক্রিপ্টগুলি মোড়ায়? ব্যবহারকারী কি কোনওভাবে এই আচরণটি আটকাতে পারবেন? ব্যবহারকারী ডাব্লুপি কোর পরিবর্তন না করে কোনওভাবে উপরের বাগের চারপাশে কাজ করতে পারেন?


1
সম্পাদকটিতে ইনলাইন জেএস আটকানোর সময়, ডব্লিউপি এর উচিত এই আচরণটি করা। আমি
জেএসকে

আপনি কি ডাব্লুওয়াইএসআইডাব্লুওয়াইজি সম্পাদক হিসাবে "পোস্টের মৃতদেহ" বলতে চান? আমি যা দেখতে পাচ্ছি সেগুলি থেকে, স্ক্রিপ্টগুলি মুদ্রণ করা হয় তখন সিএসটিএটি ট্যাগগুলিতে জেএস জড়িয়ে যায় (যা বেশ কয়েকটি উপায়ে আবেদন করা যেতে পারে) তবে ফিল্টারযোগ্য নয়। আমি কল্পনা করা হবে যদি আপনি না মানে কোনো পোস্টের WYSIWYG ওয়েবসাইট, এটা থিম দ্বারা সম্পন্ন সামগ্রীতে কিছু ফিল্টারিং হতে পারে।
ডগ বেলচেম্বার 9

1
আপনি WYSIWYG সম্পাদকটিতে জাভাস্ক্রিপ্ট পোস্ট করার পরামর্শ দেওয়া হয়নি। আপনার কন্টেন্ট সাফ করার জন্য সম্পাদকের কাছে বেশ কয়েকটি ফিল্টার রয়েছে যা ইনলাইন জেএসের সাথে খারাপভাবে ইন্টারঅ্যাক্ট করে। এমন প্লাগইন রয়েছে যা এই ধরণের দৃশ্যে সহায়তা করে।
মাইকএনগারেট

উত্তর:


1

আসলে, এটি ওয়ার্ডপ্রেস নয় যা CDATAট্যাগগুলি সন্নিবেশ করছে , তবে ভিজ্যুয়াল সম্পাদক, টিনিএমসিই। টিনিএমসিই এর বিশদগুলি এখানে অফটোপিক, তবে আপনি স্ট্যাকওভারফ্লোতে এর একটি সমাধান পড়তে পারেন ।

এটি বলেছে, টিনিএমসিএল বন্ধ করা আপনার সম্পূর্ণ সমাধান হতে পারে না। ওয়ার্ডপ্রেস নিজেও CDATAট্যাগ যুক্ত করার জন্য একটি ফাংশন রয়েছে wxr_cdata, যা কোনও বৈধ এক্সএমএল-ফাইল আউটপুট দেওয়ার সময় ব্যবহৃত হয়, উদাহরণস্বরূপ যদি আপনি কোনও আরএসএস-ফিডে ব্যবহারের ফাইলটি রফতানি করতে চান। থিমস এবং / অথবা প্লাগইনগুলি যদি নথির বৈধ এক্সএইচটিএমএল হতে চায় তবে এই ফিল্টারটি সামগ্রীটিতে সংযুক্ত করার সিদ্ধান্ত নিতে পারে।

এই যেখানে তারপর আপনি মধ্যে চালানো হয় বাগ , যা প্রথম বারো বছর আগে নথিভুক্ত এবং রহস্যই থেকে গেছে যায়নি। এটি এই তিনটি লাইন সম্পর্কে the_content:

$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]&gt;', $content );
echo $content;

আপনি দেখতে পাচ্ছেন যে, str_replaceহার্ডকোডযুক্ত রয়েছে, তত্ক্ষণাত প্রতিধ্বনিত হবে। এই প্রতিস্থাপনকে বাধা দেওয়ার কোনও উপায় নেই।

আপনি যদি আপনার থিমটি নিয়ন্ত্রণ করেন তবে আপনি যা করতে পারেন তা হল বাফার the_content এবং প্রতিস্থাপনটি বিপরীত। এটার মত:

ob_start();
the_content();
$content = ob_get_clean();
$content = str_replace( ']]&gt', ']]>', $content ); 
echo $content;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.