প্রয়োগ_ ফিল্টার ফাংশন এবং এর ভেরিয়েবলের ব্যাখ্যা


16

আমি "সরল ফর্ম রেজিস্ট্রেশন" প্লাগইন থেকে উদাহরণ নিয়ে পিএইচপি ব্যবহার করে এইচটিএমএল ফর্মগুলি কীভাবে তৈরি করবেন তা শিখছি।

আমি এই কোডটি দেখছি:

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

আপনি কী দয়া করে এখানে কী সুখী তা ব্যাখ্যা করতে পারেন - ফাংশনটি কী করে, কেন 'সরল-রেগ-নির্দেশাবলী' এবং 'সরল-রেগ' দরকার?

কেন এই লাইনটি সহজভাবে হতে পারে না:

$form .= 'Please fill out this form to sign up for this site' ;

আমি ফাংশন রেফারেন্সটি পড়েছি তবে এখনও এটি বের করতে পারি না।

উত্তর:


22

এই লাইনটি দুটি পৃথক ফাংশন ব্যবহার করছে যার দুটি পৃথক ব্যাখ্যা দরকার।

__ ()

এটি একটি অনুবাদ ফাংশন। যদি সেটিংসটি সঠিকভাবে করা হয় তবে এটি প্রাক-অনুবাদিত স্ট্রিংয়ের তালিকা থেকে প্রথম প্যারামিটারটি অনুবাদ করবে। যদি কোনও ইনস্টলেশনটিতে এই ফাংশনটি ব্যবহারের জন্য সংকলিত অনুবাদ সহ কোনও ফাইল থাকে, তবে এটি এটি ব্যবহার করবে। অবশ্যই, প্লাগইনটির নিজস্ব অনুবাদটি প্যাকেজ করতে হবে, সুতরাং দ্বিতীয় পরামিতি। simplr-regবলছে __()যে স্ট্রিংয়ের অনুবাদটি অনুবাদ মূল ফর্মের 'Please fill out this form to sign up for this site'সাথে যুক্ত হওয়া উচিত 'simplr-reg'(এটি load_plugin_textdomain()ফাংশনের মাধ্যমে প্লাগইনে আগে করা হয় )।

ফাংশনটি পরে অনুবাদটি ফেরত দেয়। যদি ফেরার জন্য কোনও অনুবাদ না থাকে (যেমন বর্তমান ভাষার সংকলিত অনুবাদ নেই, স্ট্রিংটির সেই প্যাকেজটির জন্য একটি সংকলিত অনুবাদ নেই ইত্যাদি), মূল ইনপুটটি ফিরে আসে is

সুতরাং ইংরেজী কোনও ওয়ার্ডপ্রেস সাইটের জন্য, __( 'This', 'simplr-reg' )কার্যত একই রকম 'This'। L10n (স্থানীয়করণ) সম্পর্কে আরও জানতে, কোডেক্সে এটি পড়ুন:

http://codex.wordpress.org/I18n_for_WordPress_Developers

apply_filters ()

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

আপনি যে কোডটির স্নিপেট সম্পর্কে জিজ্ঞাসা করেছেন তার মতো ডেটা ম্যানিপুলেট করতে আপনি ফাংশনটি ব্যবহার করবেন add_filter()। এটি কীভাবে কাজ করে তার একটি প্রাথমিক উদাহরণ:

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

আপনি সম্ভবত সেখানে প্রথম যুক্তিটি চিনতে পারবেন। এটি add_filterউপরে ব্যবহৃত একই । এই হুক নাম। দ্বিতীয় যুক্তি হ'ল ফিল্টার কলব্যাক। এটি অবশ্যই কোনও ফাংশনে বৈধ কলব্যাক হতে হবে ( কলব্যাক সম্পর্কে এখানে আরও পড়ুন )। কোডটির এই লাইনটি বলছে "যখন 'simplr-reg-instructions'হুকটি কার্যকর করা হবে তখন আমি সরবরাহিত কলব্যাক দিয়ে ফাংশনটি চালাও"। apply_filters()তার প্রথম যুক্তিতে পাওয়া হুকটি কার্যকর করে, যার অর্থ "এই হুকের জন্য নিবন্ধিত সমস্ত ফাংশন সম্পাদন করুন।" apply_filtersতারপরে অন্য সমস্ত আর্গুমেন্টগুলি (এই ক্ষেত্রে 'Please fill out this form to sign up for this site') সেই ফিল্টারের ফাংশনে পাস করে। সুতরাং, আমি উপরে যে কলব্যাকটি ব্যবহার করেছি তা দেখতে এইরকম হওয়া উচিত:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

ওয়ার্ডপ্রেসে দুটি ধরণের হুক রয়েছে: ফিল্টার (আমরা এখানে যে ধরণের ব্যবহার করছি) এবং ক্রিয়া। উভয়ের মধ্যে প্রধান পার্থক্য হ'ল ফিল্টারগুলি আপনাকে কিছু প্রত্যাশা করে এবং ক্রিয়াগুলি করে না। সুতরাং, এই ফিল্টারটির জন্য, উপরে আমার উদাহরণটি চারপাশে কিছু এইচটিএমএল যুক্ত করেছে 'Please fill out this form to sign up for this site'এবং এটি প্রদান করে।

ক্রিয়া এবং হুক সম্পর্কে আরও পড়ুন এখানে:

http://codex.wordpress.org/Plugin_API


জন, আপনাকে অনেক ধন্যবাদ দুর্দান্ত উত্তর! কিন্তু আমি এমনকি এক প্লাগইন ফাইলের মধ্যে "add_filter ( 'simplr-REG-নির্দেশনা', ..." লাইন এটি মনে করতে পারে না কীভাবে চেয়ে apply_filter রান।?
অ্যাশ

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

+1 দুর্দান্ত ব্যাখ্যা - দস্তাবেজের মতো
এডি বি

+1 দুর্দান্ত উত্তর, ঠিক আমি যা খুঁজছিলাম, আমি অত্যন্ত বিভ্রান্ত হয়ে যাচ্ছিলাম তবে এখন সবকিছু এতটাই স্পষ্ট;)
ডোজ 87

5

আপনার এখানে দুটি আলাদা ফাংশন রয়েছে apply_filtersএবং__()

প্রয়োগ_ ফিল্টার ফাংশন হ'ল ওয়ার্ডপ্রেস উপায় যা আপনাকে নিজের কলব্যাক ফাংশন এবং ফাংশনটি ব্যবহার করে ভেরিয়েবলের মান পরিবর্তন / সম্পাদনা করতে add_filterদেয়। এটি অনেক যুক্তি গ্রহণ করে তবে গুরুত্বপূর্ণটি প্রথম দুটি:

$something = apply_filters( $tag, $value, $var ... );

ট্যাগটি ফিল্টার হুকের নাম যা ব্যবহৃত হয় add_filter:

add_filter($tag,callback_function);

মান হল আসল মান যা আপনি পরিবর্তন করতে বা সম্পাদনা করতে সক্ষম হবেন।

$ var হল পরিবর্তনশীল যা আপনার কলব্যাক ফাংশনটি এক বা একাধিক ব্যবহার করতে পারে।

__() ফাংশন অনুবাদ জন্য ব্যবহৃত হয়:

__($message,$text_domain);

$ বার্তাটি অনুবাদ করার আসল বার্তা।

$ টেক্সট_ডোমাইন হল পাঠ্য ডোমেন ট্যাগ যা প্লাগইন বা থিম অনুবাদ লোড করার জন্য ব্যবহৃত হয় load_plugin_textdomain()

এর মানে কি?

এটি $ বার্তার অনুবাদের জন্য স্থানীয়করণ মডিউলটি সন্ধান করে এবং পিএইচপি রিটার্ন বিবৃতিতে অনুবাদটি পাস করে। যদি $ বার্তার জন্য কোনও অনুবাদ না পাওয়া যায় তবে এটি কেবল $ বার্তা দেয়।

সুতরাং এখন আপনার ক্ষেত্রে দুটি ফাংশন একই পদ্ধতিতে কাজ করে, প্রয়োগ_ ফিল্টারগুলি simplr-reg-instructionsফিল্টার হুকের সাথে সম্পর্কিত যে কোনও কলব্যাক ফাংশন প্রেরণ করবে পাঠ্য ব্যবহার করে 'এই সাইটের জন্য সাইন আপ করতে দয়া করে এই ফর্মটি পূরণ করুন' of এর ডোমেনsimplr-reg


বেন্টারনেট, অনেক অনেক ধন্যবাদ! প্লাগইন ফাইলগুলিতে আমি কোনও "add_filter ('সরল-রেগ-নির্দেশাবলী", "লাইন) খুঁজে পাচ্ছি না তা কীভাবে হয়?
অ্যাশ

প্লাগিনগুলির কার্যকারিতা প্রসারিত বা ফিল্টার করতে চান এমন বিকাশকারীদের পক্ষে এটি একটি হুক বামে।
বেন্টারনেট

তাহলে এখানে অ্যাড ফিল্টার আশা করা যায় না? আমি বুঝতে পারছি না কেন। অ্যাড_ফিল্টার ফাংশনগুলি প্রয়োগ করে কি তার হুকের সাথে যুক্ত সমস্ত ফাংশন প্রয়োগ করা উচিত নয়?
অ্যাশ

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