Do_action এবং যোগ_অ্যাকশন মধ্যে পার্থক্য


20

এই প্রশ্নটি ভুল হতে পারে, আমি এটি সম্পর্কে নিশ্চিত নই। কারণ আমি এ বিষয়ে পরিষ্কার নয়।

আমি জানি add_actionএটি নির্দিষ্ট ফাংশনে আমাদের ফাংশনটি হুক করতে অভ্যস্ত। উদাহরণস্বরূপ add_action('wp_head'.'myfunc');এখন কি কোড কোড মধ্যে myfuncকার্যকর করা হবে wp_head()। এটি পরিষ্কার তবে do_actionএটি কী করে তাতে আমার সন্দেহ হচ্ছে ?

আমি মনে করি এটি ইতিমধ্যে উপলব্ধ হুকগুলির মতো আমাদের নিজস্ব হুক তৈরি করতে ব্যবহৃত হয় (ডাব্লুপি_হেড, ডাব্লুপি_ফুটার, ইত্যাদি) যদি আমি সঠিক হন তবে যে কেউ আমাকে সাধারণ উদাহরণ সহ একটি সহজ বোধগম্য উত্তর প্রদর্শন করতে পারে।

আমি ইন্টারনেটের মধ্যে পার্থক্যটি চেষ্টা করেছি তবে সবাই অ্যাড_অ্যাকশন এবং অ্যাড_ফিল্টার মধ্যে পার্থক্য দেখায়। আমি সেখানে যেতে চাই না কারণ প্রথমে আমি এটি পরিষ্কার করতে চাই এবং তারপরে আমি সেখানে চলে যাব।

কেউ কি আমাকে সাহায্য করতে পারেন?

প্রশ্ন পোস্টের পরে সম্পাদনা করুন

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');

add_action('custom','custom_register');

আমি এটি প্লাগিনে চেষ্টা করেছিলাম কিন্তু আমি সতর্কতা বার্তাটি পাইনি।

আমি যখন একই ফাংশনটি হুক করি wp_headতখন এটি ঠিকঠাক কাজ করে

/******************working****************/
add_action('wp_head','custom_register');

কলব্যাকটি নিবন্ধ করার do_action('custom'); পরে আপনি কল করলে কী হয় ? এবং নিশ্চিত করুন যে jQuery লোড হয়েছে।
ফুসিয়া

আমি পিছনের শেষ বা সামনের প্রান্তে
সূর্যের

jQuery লোড করা হয়। আমি যখন একই ফাংশনটি হুক করি তখন wp_headএটি custom
সূর্যের

সান, আমি বিশ্বাস করি আপনার মূল প্রশ্নের উত্তর টসচো দ্বারা দেওয়া হয়েছিল এবং আপনার এটি সমাধান হিসাবে চিহ্নিত করা উচিত। আপনার করা # 3 এবং # 4 সম্পাদনাগুলি একটি নতুন প্রশ্নের উপর নির্ভর করে ।
brasofilo

উত্তর:


13

do_action( 'unique_name' )আপনার নিজের ক্রিয়া তৈরি করতে ব্যবহার করুন ।

আপনি এটি আপনার প্লাগইনটির জন্য একটি এপিআই অফার করতে ব্যবহার করতে পারেন , যাতে অন্যান্য প্লাগইনগুলি আপনার কাস্টম অ্যাকশনের জন্য কলব্যাকগুলি নিবন্ধন করতে পারে। উদাহরণ: আমার প্লাগ ইনটিতে আমাকে ড_অ্যাকশন কল করতে হবে?

তবে আপনি কোনও থিমেও কাস্টম ক্রিয়া (বা ফিল্টার) ব্যবহার করতে পারেন। উদাহরণ: একটি ওয়ার্ডপ্রেস থিমে কাস্টম বিভাগগুলি প্রয়োগ করার সর্বোত্তম অনুশীলনের উপায়

এবং আপনি প্লাগইন এবং থিম একসাথে কাজ করতে উভয়কে একত্রিত করতে পারেন। উদাহরণ: কীভাবে থিমটিতে প্লাগইন থেকে পদ্ধতি উপলব্ধ করবেন?

সংক্ষিপ্তসার: add_action( 'foo' )একটি কলব্যাক do_action( 'foo' )নিবন্ধন করে, সেই নিবন্ধিত কলব্যাক কার্যকর করে।


আমি যে সহায়তা পেয়েছি তার জন্য ধন্যবাদ মূলত এপিআই উদ্দেশ্যে। আমি একটি নমুনা চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি you আপনি কি সেখানে কোনও সমস্যা খুঁজে পেতে পারেন? আমার সম্পাদনা @ টোস্কো
সূর্যের

আমরা কি উত্তরাধিকারের মতো অন্য মামলা হিসাবে বলতে পারি? আমরা এই পথে যাচ্ছি ক্লাসটি প্রসারিত ও ওভাররাইড করার ইন্টেড। এটা কি সঠিক?
সূর্য

@ সান এইচএম, হ্যাঁ, তবে আপনি উভয় পদ্ধতির সমন্বয় করতে পারেন , তারা পারস্পরিক একচেটিয়া নয়।
ফুসিয়া

1

এটি আমার অনুমান, সুতরাং আপনি যদি আরও ভাল জানেন তবে দয়া করে একটি মন্তব্য করুন যাতে আমি আমার অনুমানটি আপডেট করতে পারি।

আপনার প্লাগইন কোডটি আগে কার্যকর করা হয়েছিল wp_head()(যা আমরা ধরে নিতে পারি যে এতে যুক্ত ক্রিয়াগুলি ডাকা হবে)। আপনি যখন add_action('wp_head','custom_register'), পিএইচপি-কে বলছেন যে যখন (ভবিষ্যতে) ফোন do_action('wp_head')করা হবে তখনও custom_register()। আপনার কলটিতে একই কথা রয়েছে add_action('custom','custom_register')তবে আপনি যেমন আপনার কোডটিতে দেখেন, কলটি do_action('custom')ইতিমধ্যে করা হয়েছে, এবং যখন এটি কল করা হয়েছিল, তখন এটিতে কোনও পদক্ষেপ যুক্ত হয়নি। এই কারণেই তোস্কো জিজ্ঞাসা করেছিল যে আপনি কলব্যাকটি নিবন্ধ করার do_action('custom') পরে কল করলে কী হয় । পিছনের শেষ এবং সামনের প্রান্ত সম্পর্কে আপনার উত্তর অস্পষ্ট। আপনি যদি নিম্নলিখিত কোডটিতে শেষ দুটি লাইন পরিবর্তন করেন তবে আমার ধারণা এটি কার্যকর হবে:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');                    // This is called before it will have an effect.

add_action('custom','custom_register'); // Too late - do_action was already called.

0

do_action: অ্যাকশন হুক রেজিস্টার করার সময় add_action: নিবন্ধিত হুকটিতে একটি কলব্যাক ফাংশন যুক্ত করে।

উদাহরণ

আপনার টেম্পলেটটিতে সাইডবারের আগে আপনি কিছু মুদ্রণ করতে চেয়েছিলেন তা বিবেচনা করুন।

  1. আপনি একটি যোগ হবে কর্ম হুক আপনার টেমপ্লেট ফাইলে index.phpমাধ্যমে <?php add_action('bp_sidebar_left'); ?>
  2. এখন আপনার functions.phpফাইলে আপনি কোনও কিছু মুদ্রণ করতে সেই হুকটিতে একটি কলব্যাক ফাংশন যুক্ত করতে পারেন।

add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }


-1

আপনি নীচের মত ব্যবহার করতে হবে:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
.

add_action('custom','custom_register'); // Too late - do_action was already called. 
do_action('custom');                    // This is called before it will have an effect

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