যোগ_অ্যাকশন (), ফাংশনের আগে বা পরে add_filter ()


18

ওয়ার্ডপ্রেস স্নিপেটস / টিউটোরিয়ালস / প্লাগইনগুলির সন্ধানের সময় আমি প্রায়শই ফাংশন ঘোষণার আগেই দেখি add_action()এবং add_filter()স্থাপন করি:

add_action( 'publish_post', 'email_friends' );

function email_friends( $post_ID ) {
   $friends = 'bob@example.org, susie@example.org';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

যুক্তিবাদী দৃষ্টিকোণ থেকে এটি কেবল আমার কাছে বোধগম্য নয়। আপনার কোডটিতে কল করার পরে আপনি কেন ফাংশনটি রাখবেন? আমি সাধারণত একই পরিস্থিতিটি পরিচালনা করব:

function email_friends( $post_ID )  {
   $friends = 'bob@example.org, susie@example.org';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

add_action( 'publish_post', 'email_friends' );

আমি উভয় পরিস্থিতিতে কাজ জানি, কিন্তু একটি বা অন্য একটি নির্দিষ্ট সুবিধা আছে? আমি প্রায় 90% সময় দেখি যে প্রথম দৃশ্যটি ব্যবহৃত হচ্ছে, যাতে এটি আমাকে বিশ্বাস করতে পরিচালিত করে যে এটির কোনও উপকারে রয়েছে।

উত্তর:


13

: এটা পড়তে সহজ হয় যখন হয় কি বলা হয়? আপনি যদি কোনও হুক ডিবাগ করছেন তবে আপনি ফাংশনটি পড়তে হবে কিনা তা আপনি অবিলম্বে দেখতে পারবেন: এটি যদি আপনার হুক না হয় তবে আপনি কোডটি এড়িয়ে যেতে পারেন।

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

add_action( 'wp_head',  'foo' );
add_action( 'shutdown', 'bar' );

/**
 * Foo you!
 *
 * @wp-hook wp_head
 * @return  void
 */
function foo()
{
    print '<!-- foo -->';
}

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

6

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

আমি বিশ্বাস করি যে এখানে সঠিক বক্তব্যটি রয়েছে: যা কিছু আপনার নৌকাকে ভাসিয়ে দেয় :)


এটি কাজ করে না কারণ পিএইচপি পুরো ডকুমেন্টকে বিশ্লেষণ করে, তবে call_user_func_array()চলমান অবস্থায় আপনার ফাংশন সংজ্ঞা অনুসারে বলা হয় (সম্ভবত) do_action। সুতরাং আপনি যে বিন্দু পর্যন্ত hooked ফাংশন সংজ্ঞায়িত করতে পারেন।
কোভসেনিন

1

4 বছর পরে, তবে আমি নিশ্চিত এটি অনুসন্ধান থেকে এখানে আসতে লোকদের সহায়তা করবে।

অন্যরা যেমন বলেছে, পিএইচপি সম্পূর্ণ ডকুমেন্টকে পার্স করে এবং সঠিক ক্রমে কার্যকর করে, তেমন কোনও পার্থক্য নেই। সুতরাং আপনি যা চান।

আমি ব্যক্তিগতভাবে প্রথম স্টাইলটি পছন্দ করি:

add_action(hook, bar);
function bar(){
    //code here
}

আমি পিছনের দিকে চিন্তা করি। লক্ষ্য যদি আপনি চান। সুতরাং আমি পড়তে পছন্দ করি, "আমরা ফাংশন বারটি হুক মধ্যে করছি। ঠিক আছে, এখন, ফাংশনটি কী করে?"

এটি ফাংশনের জন্য প্রসঙ্গটি আরও ভাল সেট আপ করে। অবশ্যই এটি আমার ব্যক্তিগত পছন্দ মাত্র। তাই আপনার যা পছন্দ তা করুন।

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