অন্যান্য হুক কল করতে wp init হুক ব্যবহার করবেন?


11

আমি জানতে চাই যে এটি ওয়ার্ডপ্রেস থিম বা প্লাগইন বিকাশ অনুসারে একটি ভাল অনুশীলন কিনা।

add_action('init','all_my_hooks');

function all_my_hooks(){

// some initialization stuff here and then

add_action('admin_init',-----);
add_action('admin_menu',----);

// more like so

}

ধন্যবাদ

উত্তর:


16

সাধারণভাবে: হ্যাঁ, আপনার নিজের কোড শুরু করার জন্য একটি উত্সর্গীকৃত হুকের জন্য অপেক্ষা করুন। গ্লোবাল নেমস্পেসে কখনই কোনও বস্তুর উদাহরণ নিক্ষেপ করবেন না। তবে initখুব কমই প্রয়োজন হয়।

আপনি যতটা সম্ভব দেরি করতে পারেন। যদি আপনার প্রথম কোডটি চালিত হয় তবে wp_headপূর্ববর্তী হুক ব্যবহার করবেন না। আপনি এমনকি ক্যাসকেড হুক করতে পারেন :

add_action( 'wp_head', 'first_callback' );

function first_callback()
{
    // do something
    // then
    add_action( 'wp_footer', 'second_callback' );
}

initহুক সম্পর্কে : wp_loadedপরিবর্তে ব্যবহার করুন। ডাকা হয় পরে initএবং পরে ms_site_check()চালানো। এইভাবে আপনি একাধিক-সাইট ইনস্টলেশনতে আপনার প্লাগইনটি একটি অবৈধ উপ সাইটটিতে চালানো এড়াবেন। অন্য সব কিছুই এক রকম।


3
wp_loadedএমএস তথ্যের জন্য +1 ।
কায়সার

আপনার প্রতিক্রিয়াটির জন্য অনেক ধন্যবাদ, এখনও একটি সন্দেহ, যা ডাব্লুপি-লোডের ভিতরে অন্য সমস্ত হুকগুলি লোড করা বা সেগুলি পৃথকভাবে লোড করা ভাল? আমি ভাবছি যদি আমি wp_ লোডে হুকগুলি যুক্ত করি তবে তারা এডমিন_ইনিট বা অ্যাডমিন_মেনুর পরে হুক হওয়ার পরিবর্তে আগেই হুক হবে?
atender

ক্যাসকেডিং হুক সমস্যা নয়?
atender

না, এটা কেন হবে? প্রথমটি কার্যকর হলেই দ্বিতীয় হুকটি কল করুন।
ফুসিয়া

3

আমি এই কারণে এই অনুশীলনের বড় সুবিধা দেখতে পাচ্ছি না :

নিবন্ধ করার সময় আপনার কলব্যাক ফাংশনগুলি কল করা হয় না

add_actionএবং add_filterফাংশন শুধুমাত্র বিশ্বব্যাপী পরিবর্তনশীল একটি এন্ট্রি যোগ $wp_filterযা সমস্ত ফিল্টার এবং কর্ম ঝুলিতে। উত্স দেখুন । এটি আপনার ফাংশন কল করে না। আপনার কোডটি কেবল তখন চলবে যখন তাদের ডাকা হবে do_actionএবং apply_filters(যথাযথ হুক নাম সহ) বলা হবে, যেখানে এই হুকগুলি হওয়া উচিত সেখানে খুব দেরি হয়।

আপনি হয়ত বলতে পারেন যে এটি করার ফলে বৈশ্বিক পরিবর্তনশীল $wp_filterআরও বড় হয়ে যাবে => আরও মেমরির প্রয়োজন। তবে আমি মনে করি একটি নতুন ফাংশন তৈরির ক্ষেত্রেও একই সমস্যা রয়েছে।

সাংগঠনিক কোড

সবকিছুকে একটি ফাংশনে রেখে দেওয়াই আপনাকে আপনার থিম / প্লাগইনে প্রতিটি ফাইলের সমস্ত হুক মনে রাখতে বাধ্য করে। আপনি এরকম কিছু করবেন না :

  • ইন header.php: শিরোনামে ঘটে এমন জিনিসগুলির জন্য হুক এবং কলব্যাক ফাংশন যুক্ত করুন (মেনুতে, স্ক্রিপ্টটিকে নিবন্ধকরণ করার মতো)
  • ইন content.php: ফিল্টারিং সামগ্রীর জন্য হুক এবং কলব্যাক ফাংশন যুক্ত করুন
  • admin-menu.php: অ্যাডমিন মেনু যুক্ত করতে হুক এবং কলব্যাক ফাংশন যুক্ত করুন

(ধরে নিন যে এই ফাইলগুলি আপনার থিম / প্লাগইনে রাখা হয়েছে)

এর পরিবর্তে, আপনাকে:

  • একমাত্র কলব্যাক ফাংশন করা header.php, content.php,admin-menu.php
  • এবং সমস্ত হুককে অন্য ফাইলে একটি পৃথক ফাংশনে রাখুন

=> এটি যখন আপনি header.phpফাইলের বিষয়বস্তুটি দেখেন তখন কী হয় তা জানার জন্য আপনাকে কষ্ট দেওয়া হবে। এই কলব্যাকগুলি কখন নিষ্ক্রিয় হয় তা জানতে আপনাকে অনুসন্ধান করতে হবে।

এবং যখন আপনার থিম / প্লাগইনটিতে আপনার একাধিক ক্লাস থাকে তখন পরিস্থিতি সম্পর্কে ভাবুন। আপনি কি সব ক্লাসের সমস্ত হুক এক জায়গায় রেখেছেন? বা প্রতিটি শ্রেণীর একটি মোড়ক ফাংশন রয়েছে যা সমস্ত হুক ধরে? এটা খুব বাজে!

এই কারণগুলির উপরে, আমার মনে হয় এটি ব্যক্তিগত স্টাইল :)। আমি কিছু ফ্রেমওয়ার্ক দেখেছি যেমন হাইব্রিড আপনি যা বলেছিলেন তা করে। কখনও কখনও এই কাঠামোগুলিতে খনন করা আমার পক্ষে শক্ত হয়ে যায়!

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