প্লাগইন উন্নয়নের জন্য উদ্দেশ্য সেরা অভ্যাস? [বন্ধ]


135

প্লাগইন বিকাশের জন্য উদ্দেশ্যমূলক সর্বোত্তম অনুশীলনগুলি সংগ্রহ করতে একটি সম্প্রদায় উইকি শুরু করা । এই প্রশ্নটি ডাব্লুপি-হ্যাকারদের সম্পর্কে @ ইএএমএএন-র মন্তব্য দ্বারা অনুপ্রাণিত হয়েছিল ।

ধারণাটি হ'ল উদ্দেশ্যমূলক সর্বোত্তম অনুশীলনগুলি কী হতে পারে তার সাথে সহযোগিতা করা যাতে আমরা শেষ পর্যন্ত এগুলিকে কিছু সম্প্রদায়ের সহযোগিতা পর্যালোচনা প্রক্রিয়ায় ব্যবহার করতে পারি।

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


আমি সত্যিই বুঝতে পারি না যে সম্প্রদায়ের উইকিটি কীভাবে SE এর সাথে এটি (এবং অন্যরা) ঠিকভাবে কাজ করবে, তবে এটি মেটাতে একটি প্রশ্ন। এটি কেবল উত্তরগুলিতে মূলত দুগ্ধগুলিকেই গাদা করবে।
hakre

@ হাক্রে: দুর্দান্ত পয়েন্ট জিনিস দেখার পরে আমি সেই বর্ণনায় যুক্ত করতে যাচ্ছি যে লোকদের "উত্তর" অনুযায়ী কেবল একটি ধারণা যুক্ত করা উচিত এবং আমি আমার বিদ্যমান উত্তরটি একাধিক উত্তর হিসাবে পরিবর্তন করতে চলেছি।
মাইকচিন্কেল

উত্তর:


72

ক্রিয়া এবং ফিল্টার ব্যবহার করুন

আপনি কি মনে করেন মানুষ কিছু তথ্য যোগ বা পরিবর্তন করা করতে চান তাহলে: প্রদান apply_filters () ফেরার আগে

পিএস একটি জিনিস আমি কিছুটা হতাশাবোধ করি এবং আপনার প্রশ্নের ঠিকানাগুলি হ'ল প্লাগইনগুলির শতাংশ যেগুলি কেবল শেষ ব্যবহারকারীদের জন্য ডিজাইন করা হয়েছে, যার নিজস্ব কোনও হুক নেই। ভাবুন যদি ওয়ার্ডপ্রেসটি বেশিরভাগ প্লাগইনের মতো নকশা করা হত? এটি জটিল এবং খুব কুলুঙ্গিক সমাধান হবে।

ওয়ার্ডপ্রেসের অন্য প্লাগইনগুলির উপর নির্ভরশীল এমন প্লাগইনগুলি স্বয়ংক্রিয়ভাবে ইনস্টল করার ক্ষমতা থাকতে যদি জিনিসগুলি আলাদা হত? এটি হিসাবে সাধারণত আমি আমার প্রচুর কার্যকারিতা স্ক্র্যাচ থেকে লিখতে হয় কারণ ক্লায়েন্টরা জিনিসগুলি একটি নির্দিষ্ট উপায়ে এবং উপলব্ধ প্লাগইন চায়, সেখানে 90% থাকাকালীন, আমাকে বাকি 10% আপডেট করার নমনীয়তা দেয় না।

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

আরেকটি প্রশ্ন থেকে একটি উদাহরণ নেওয়া যাক :

উদাহরণ: যখন কেউ কোনও নিবন্ধ রিটায় করে তখন আমি আমার প্লাগইনে কিছু করতে চাই। জনপ্রিয় রিট্যুইট প্লাগইনটি যেই হোক না কেন এটিতে যদি কাস্টম হুক থাকত যে আমি হুক ইন করতে এবং ফায়ার অফ করতে পারি, এটি দুর্দান্ত। নেই, তাই আমি এটি যুক্ত করার জন্য তাদের প্লাগইনটি সংশোধন করতে পারি, তবে এটি কেবল আমার অনুলিপিটির জন্যই কাজ করে এবং আমি এটিকে পুনরায় বিতরণের চেষ্টা করতে চাই না।

সংশ্লিষ্ট


55

লোড স্ক্রিপ্ট / দিয়ে সিএসএস wp_enqueue_scriptএবংwp_enqueue_style

প্লাগইনগুলিতে জেএস / সিএসএস ফাইলগুলির নকল সংস্করণগুলি লোড করার / লোড করার চেষ্টা করা উচিত নয়, বিশেষত ডাব্লুপি কোরে অন্তর্ভুক্ত jQuery এবং অন্যান্য জেএস ফাইলগুলি।

প্লাগইনগুলি সর্বদা ব্যবহার করা উচিত wp_enqueue_scriptএবং wp_enqueue_styleজেএস এবং সিএসএস ফাইলগুলি লিঙ্ক করার সময় এবং কখনই সরাসরি <script>ট্যাগগুলির মাধ্যমে নয় ।

সংশ্লিষ্ট


1
পরামর্শ : এটিতে নির্ভরতা ব্যবহারের বিষয়ে একটি ছোট নোট (যেহেতু এটি এনকুই সিস্টেমের অংশ) ব্যবহার করা উচিত st
t31os

ডান, তবে আরও ভাল এটি হল আপনি শৈলী এবং স্ক্রিপ্টগুলি আগে নিবন্ধভুক্ত করুন এবং তারপরে এই স্ক্রিপ্টগুলি আইডির মাধ্যমে সজ্জিত করুন। অন্যান্য বিকাশকারীদের পক্ষে স্ক্রিপ্টগুলি পরিবর্তন করতে বা এটি কাস্টম প্লাগইনগুলিতে ব্যবহার করার জন্য এটি খুব সূক্ষ্ম। অর্ডার পরিবর্তন করা বা একটি সংক্ষেপে ফাইল তৈরি করা এটিও সহজ।
বুলেটজ

2
এছাড়াও, যেখানে প্রয়োজন পৃষ্ঠাগুলিতে স্ক্রিপ্টগুলি এবং স্টাইলগুলি লোড করুন। scribu.net/wordpress/optimal-script-loading.html
এমআর

49

I18n সমর্থন

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

নোট করুন যে initক্রিয়া চলাকালীন ভাষা ফাইলগুলি লোড করা খুব গুরুত্বপূর্ণ, যাতে ব্যবহারকারী ক্রিয়াকলাপটি করতে পারেন।

ওয়ার্ডপ্রেস বিকাশকারীদের জন্য কোডেক্স: আই 18 এন দেখুন

এবং এই নিবন্ধটিও: ডাব্লুপি ভাষা ভাষা ফাইলগুলি সঠিকভাবে লোড হচ্ছে

ওয়ার্ডপ্রেস 4.6+

ডাব্লুপি 4.6 লোড অর্ডার এবং অবস্থানগুলি যাচাই করেছে তা পরিবর্তন করেছে, এটি বিকাশকারী এবং ব্যবহারকারীদের জন্য এটি অনেক সহজ করে তুলেছে।

একটি পাঠ্য ডোমেন 'মাই-প্লাগইন' দিয়ে একটি প্লাগইন বিবেচনা করে, ওয়ার্ডপ্রেস এখন প্রথম অনুবাদ অনুবাদ ফাইলটির সন্ধান করবে:
/wp-content/languages/plugins/my-plugin-en_US.mo

এটি যদি সেখানে কোনও সন্ধান করতে ব্যর্থ হয় তবে এটির জন্য প্লাগইন যেখানে এটি দেখতে বলবে সেখানে সন্ধান করবে (কোডেক্স অনুসরণ করে প্লাগইনস 'ভাষা' ফোল্ডারে স্বাভাবিকভাবে): / ডাব্লুপি
-কনটেন্ট / প্লাগইন / মাই-প্লাগইন / ভাষা / আমার- plugin-en_US.mo

সর্বশেষে কোন ভাষা ফাইল পাওয়া যায় এটা ডিফল্ট অবস্থান পরীক্ষা হবে:
/wp-content/languages/my-plugin-en_US.mo

প্রথম চেকটি 4..6-তে যুক্ত করা হয়েছিল এবং ব্যবহারকারীদের একটি ভাষা ফাইল যুক্ত করার জন্য একটি সংজ্ঞায়িত স্থান দেয়, যেমন তাদের আগে যেমন বিকাশকারীরা কোথায় ভাষা ফাইল যুক্ত করতে পারে তা জানতে হবে, এখন ব্যবহারকারীকে কেবল প্লাগইনের পাঠ্য ডোমেনটি জানতে হবে: / wp-content / ভাষায় / plugins / এখানে TEXTDOMAIN-LOCAL.mo


নীচে পুরানো উপায় (ডাব্লুপি 4.6+ থেকে প্রাসঙ্গিক নয়)

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

public function load_plugin_textdomain()
{
    $domain = 'my-plugin';
    // The "plugin_locale" filter is also used in load_plugin_textdomain()
    $locale = apply_filters( 'plugin_locale', get_locale(), $domain );

    load_textdomain( 
            $domain, 
            WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo' 
    );
    load_plugin_textdomain( 
            $domain, 
            FALSE, 
            dirname( plugin_basename(__FILE__) ) . '/languages/' 
    );
}

আমার জন্য সবচেয়ে গুরুত্বপূর্ণ। এটি করা অতিরিক্ত কাজ করার খুব বেশি কিছু নয় তবে লক্ষ লক্ষ ব্যবহারকারী যারা তাদের প্রথম ভাষা হিসাবে ইংরেজী না বলে আপনার প্লাগইনকে আরও দরকারী করে তুলতে পারেন তার মধ্যে একটি। এমনকি আপনাকে কোনও শব্দ নিজেই অনুবাদ করতে হবে না, তবে অনুবাদ করার জন্য সমস্ত কিছু প্রস্তুত করুন।
2ndkauboy

এটি এমন মূল্যবান, তবুও সহজ কাজটি করার জন্য, আমি বলতে চাইছিলাম আমি সম্মত এবং প্রতিটি প্লাগইন লেখককে এটি করা উচিত।
t31os

48

নিশ্চিত করুন যে প্লাগইনগুলি WP_DEBUG এর সাথে কোনও ত্রুটি তৈরি করে না

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

ডিবাগিং চালু করতে, আপনার wp-config.phpফাইলটি সম্পাদনা করুন যাতে WP_DEBUGধ্রুবকটি সেট করা থাকে trueডিবেগের উপর কোডেক্স দেখুন আরও তথ্যের জন্য।


উত্তর প্রতি শুধুমাত্র সেরা অনুশীলন সম্পর্কে আপডেট দেখুন; আপনি একাধিক উত্তরে বিভক্ত করতে পারেন?
মাইকচিনকেল

অবশ্যই, কোনো সমস্যা নেই. এর জন্যে দুঃখিত.
জন পি ব্লচ

ধন্যবাদ, এবং আপনার তত্ত্বাবধান ছিল না, এটি আমার ছিল। ডুপ্লিকেটগুলি এবং এই কাজটি কীভাবে করা যায় সে সম্পর্কে @ হাকারের প্রশ্নের ভিত্তিতে উত্তরের জন্য একটি সেরা অনুশীলনের জন্য জিজ্ঞাসা করার জন্য আমি প্রশ্নটি সংশোধন করেছি।
মাইকচিনকেল

6
আমি যদি এই উত্তরটি দু'বার উপস্থাপন করতে পারি তবে আমি করব। যখন আমি কোনও ডেভ সাইটটিতে কাজ করছি এবং ডাব্লুপি_ডিইউবিজি বন্ধ করতে হবে তখন এটি হতাশার কারণ আমার যে প্লাগইনটি ব্যবহার করা দরকার তা হ'ল জায়গা জুড়ে সতর্কতা এবং নোটিশ।
আয়ান ডান

42

ওয়ার্ডপ্রেস কোরটিতে প্রথম বিদ্যমান কার্যাদি ব্যবহার করুন

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

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

সংশ্লিষ্ট


এখানে সবচেয়ে বড় সমস্যা হ'ল একটি উপযুক্ত বিদ্যমান কার্য উপস্থিত রয়েছে তা শিখতে। কোনটি দরকারী হবে তা পোস্ট করার একটি জায়গা এবং / অথবা কার্যকারিতাটি কোন ফাংশনকে সর্বোত্তমভাবে ব্যবহার করতে হবে তা সম্পর্কে সম্প্রদায়কে মন্তব্য করতে সক্ষম হওয়া দরকার। সম্ভবত স্ট্যাকএক্সচেঞ্জ ব্যবহার করা যেতে পারে?
মাইকচিন্কেল

Puh। এটি বেশ শক্ত হবে এবং আমি অনুমান করি এক ধরণের অন্তহীন কাজ। আমি মনে করি এইভাবে কোডেক্সকে প্রসারিত করা সবচেয়ে ভাল হবে, কারণ এটি ইতিমধ্যে বিদ্যমান।
কায়সার

আমার ধারণা, কোডেক্সটি প্রসারিত করা এবং সম্ভবত সেখান থেকে সম্পর্কিত স্টোকেক্সচেঞ্জ থ্রেডের সাথে লিঙ্কিং করা যথেষ্ট ভাল।
কায়সার

4
এটির সাথে একটি সমস্যাটি হ'ল প্রচুর কোর সত্যিই কাঠামোগত পুনর্ব্যবহারযোগ্যতার জন্য ডিজাইন করা হয়নি। আমার নিজের সংযুক্তি-মত আচরণের পোস্ট-টাইপ তৈরি করতে আমাকে কেবল অর্ধেক চিত্রের ম্যানিপুলেশন / মেটাডেটা ফাংশনগুলি অনুলিপি করতে হয়েছিল, কেবলমাত্র ডাউনসাইজের মতো কোনও ফাংশন এমন কিছু ফাংশনকে কল করে যাতে পোস্ট-টাইপ = 'সংযুক্তির জন্য হার্ডকডযুক্ত চেক অন্তর্ভুক্ত থাকে '। এর মধ্যে অনেকগুলি যেমন অবিচ্ছিন্ন wp_count_posts () এর অন্য উদাহরণ হ'ল। আপনি সত্যিই কোর ডাব্লু ব্যবহার করতে পারেন একটি সম্পূর্ণ রিফ্যাক্টরিং প্রয়োজন।
wyrfel

সম্পূর্ণরূপে এই বিষয়ে একমত। আমার সব সময় প্রিয় উদাহরণ: wp-login.php। সুতরাং, "যদি আপনি পারেন তবে" উত্তরের জন্য ভাল স্টার্টার ছিল ...
কায়সার

35

আনইনস্টল করাতে প্লাগিনের সমস্ত ডেটা মুছে ফেলা উচিত

ওয়ার্ডপ্রেস ইনস্টলেশন থেকে সরানোর পরে, একটি প্লাগইন সমস্ত ফাইল, ফোল্ডার, ডাটাবেস এন্ট্রি এবং সারণী যা এটি তৈরি করে তার বিকল্পগুলির মানগুলি তৈরি করে values

প্লাগইনগুলি সেটিংস রফতানি / আমদানির বিকল্প সরবরাহ করতে পারে, যাতে সেটিংস মোছার আগে ওয়ার্ডপ্রেসের বাইরেও সংরক্ষণ করা যায়।

সংশ্লিষ্ট


4
এটি হ'ল ডিফল্ট আচরণ হওয়া উচিত তবে এটি ব্যবহারকারীকে কিছু উপাত্ত রাখার অনুরোধ জানানো উচিত ... যেমন কোনও ভিডিও গেম আনইনস্টল করার সময় আপনাকে জিজ্ঞাসা করে যে আপনি সংরক্ষিত গেমস এবং ডাউনলোড করা সামগ্রী অপসারণ করতে চান কিনা। কোনও ব্যবহারকারী কেবল পরীক্ষার উদ্দেশ্যে প্লাগ-ইন নিষ্ক্রিয় করতে পারে এবং যখন তারা এটি পুনরায় সক্রিয় করবে তখন তাদের বিকল্পগুলি সেট আপ করার মাধ্যমে ফিরে যেতে চাইবে না।
ইমন

1
আমি কেবল তখনই কথা বলি যখন কোনও প্লাগইন সম্পূর্ণরূপে সরানো হয়, যখন এটি নিষ্ক্রিয় করা হয় তখন নয়।
ট্র্যাভিস নর্থকাট

2
আমি এটি বুঝতে পারি ... তবে কখনও কখনও আমি প্লাগইনগুলি মুছতে পারি তাই আমি
মজुरুমে

4
@ এ্যামান: তার জন্য এবং অন্য সার্ভারে প্লাগইনগুলি স্থানান্তরিত করার জন্য, প্লাগইনগুলির সেটিংস রফতানি এবং আমদানির জন্য একটি ব্যবস্থা সরবরাহ করা উচিত।
hakre

2
আমি কয়েকটি প্লাগইন তাদের লাল সেটিংসে একটি "আনইনস্টল" বোতাম অফার করে দেখেছি বড় লাল সতর্কতার সাথে এটি সমস্ত ডেটা মুছে ফেলবে। এটি ডি-অ্যাক্টিভেশন থেকে পৃথক এবং আমি এটি পরিচালনা করার দুর্দান্ত উপায় মনে করি। প্লাগইন সরানোর জন্য প্রত্যেকে "মুছুন" বোতামটি ব্যবহার করে না।
গ্যাব্রিয়েলক

34

ইনপুট ডেটা সহ এসকিউএল ইঞ্জেকশন প্রতিরোধ করুন

একটি প্লাগইন মাইএসকিউএল ডাটাবেস জিজ্ঞাসা করতে ইনপুট মান ব্যবহার করার আগে প্রত্যক্ষ বা অপ্রত্যক্ষভাবে (যেমন বা মাধ্যমে ) প্রাপ্ত সমস্ত ব্যবহারকারীর ইনপুট স্যানিটাইজ করা উচিত$_POST$_GET

দেখুন: এসকিউএল বিবৃতি ফর্ম্যাট করা


5
আপনার ডাটাবেস থেকে আগত ডেটা স্যানিটাইজ করা উচিত । মূলত, এমন কোনও ডেটা বিশ্বাস করবেন না যা হার্ডকোডযুক্ত নয়। কোডেক্স.ওয়ার্ডপ্রেস.আর / ডেটা_ভালিডেশনও একটি ভাল রেফারেন্স।
আয়ান ডান

31

সমস্ত গ্লোবাল নেমস্পেস আইটেম উপসর্গ

প্লাগইনটিতে সমস্ত বিশ্বব্যাপী নেমস্পেস আইটেমগুলি (ধ্রুবক, ফাংশন, শ্রেণি, ভেরিয়েবল, এমনকি কাস্টম ট্যাক্সোনমি, পোস্টের ধরণ, উইজেট ইত্যাদি) যথাযথভাবে উপস্থাপন করা উচিত। উদাহরণস্বরূপ, নামক একটি ফাংশন তৈরি করবেন না init(); পরিবর্তে, এর মত কিছু নাম দিন jpb_init()

নামগুলির সামনে বা পিএইচপি নেমস্পেস বৈশিষ্ট্যটি ব্যবহার করার জন্য এর সাধারণের তিন বা চার অক্ষরের উপসর্গ ব্যবহার করা উচিত । তুলনা করুন: পিএইচপি ক্লাস ধ্রুবকগুলির জন্য একক-বর্ণের উপসর্গ?

সংশ্লিষ্ট


31

একটি শ্রেণি এবং অবজেক্ট ভিত্তিক পিএইচপি 5 কোড ব্যবহার করুন

পরিষ্কার, অবজেক্ট-ভিত্তিক পিএইচপি 5 কোড না লেখার কোনও কারণ নেই। পিএইচপি 4 সমর্থন পরবর্তী প্রকাশের পরে শেষ হবে (ডাব্লুপি 3.1)। অবশ্যই, আপনি আপনার সমস্ত ফাংশন নামগুলি অবিরাম_লং_ফানশন_নাম_সুবিধা_লট_ফ_ফন্ডসরগুলি দিয়ে শেষ করতে পারেন তবে কেবল একটি সহজ শ্রেণি লিখতে এবং এতে সমস্ত কিছু বান্ডিল করা আরও সহজ। এছাড়াও, আপনার শ্রেণিকে একটি পৃথক ফাইলে রাখুন এবং সেই অনুযায়ী নাম দিন যাতে আপনি সহজেই এটি প্রসারিত এবং বজায় রাখতে পারেন:

// in functions.php
require 'inc/class-my-cool-plugin.php';
new MyCoolPlugin();

// in inc/class-my-cool-plugin.php
class MyCoolPlugin {
    function __construct() {
        // add filter hooks, wp_enqueue_script, etc.

        // To assign a method from your class to a WP 
        // function do something like this
        add_action('admin_menu', array($this, "admin"));
    }

    public function admin() {
        // public methods, for use outside of the class
        // Note that methods used in other WP functions 
        // (such as add_action) should be public
    }

    private function somethingelse() {
        // methods you only use inside this class
    }
}

নতুন MyCoolPlugin () ব্যবহার করবেন না; আমি মনে করি আপনি হুকের মাধ্যমে ডাব্লুপিতে হুক করা ভাল: প্লাগইন_লোড
বুলেটজ

সে সম্পর্কে নিশ্চিত নই। কোডেক্সের মতে প্লাগইন-লোড হওয়া প্রথম জিনিসগুলির মধ্যে একটি, তাই আমি মনে করি এটির মতো কোনও নির্মাণ করা, বা এটি একটি ক্রিয়া হিসাবে যুক্ত করাতে কিছুটা পার্থক্য রয়েছে।
হুস্কি

5
এটি কেবল সেই সর্বোত্তম অভ্যাসগুলির মধ্যে একটি যা এটি সবার কাছে সুন্দর করে তোলে।
অ্যারলেন বেলারর

1
যতদূর আমি দেখতে পাচ্ছি যে প্লাগইন-লোডে একটি হুক যোগ করা শূন্য উন্নতি করে, এবং কোনও উন্নতি হবে না যেহেতু কোনও উন্নতি হয় না, যদি মেমরির ব্যবহার বাড়িয়ে দেয়, গতি হ্রাস পায় কারণ এটি কোনও ক্রিয়ায় যেতে হয় কর্মের পরিবর্তে কেবল যুক্ত করা হচ্ছে। এছাড়াও ওও ব্যবহারকে সেরা অনুশীলন হিসাবে বিবেচনা করা উচিত নয়।
ব্যাকি

4
@ আইয়ানডুন: আপনি যদি পিএইচপি 4 সমর্থন চান তবে পিএইচপি 4 সমর্থনটি 4 বছর আগে 2008 সালের পর থেকে বাদ দেওয়া হয়েছে। এখনও পিএইচপি 4-নির্দিষ্ট চেক ব্যবহার করার কোনও কারণ নেই।
হুস্কি

26

নিষ্ক্রিয়করণে ডেটা-লোকসকে উত্সাহিত করা উচিত নয়

নিষ্ক্রিয় হওয়ার পরে একটি প্লাগইন এর কোনও ডেটা মুছে ফেলা উচিত নয়

সংশ্লিষ্ট


23

আপনার প্রয়োজনীয় ফাইলগুলি অন্তর্ভুক্ত করুন ...

আপনি যদি প্রথম প্রান্তে থাকেন তবে প্রশাসকের সাথে সম্পর্কিত কোডটি অন্তর্ভুক্ত করবেন না।


21

প্লাগিন আনইনস্টলেশনে ডেটা-লস ঘোষণা করুন

আনইনস্টল করার পরে একটি প্লাগইন উচিত একটি ব্যবহারকারী যে এটা তথ্য আছে মোছার করা হবে না সূচিত এবং একটি নিশ্চিতকরণ যে ব্যবহারকারী এখনও করছেন এবং একটি প্লাগইন আগে ডেটা না মুছে দিয়ে ঠিক আছে গ্রহণ করা উচিত এছাড়াও ব্যবহারকারী ডেটা রাখার বিকল্প অনুমতি আনইনস্টল উপর। (এই ধারণাটি ইমান থেকে প্রাপ্ত))

সংশ্লিষ্ট


3
ওয়ার্ডপ্রেস নিজেই অ্যাডমিনে একটি সতর্কতা বার্তা প্রদর্শন করে যে এটি ঘটে (কমপক্ষে এখনই ট্রাঙ্কে)।
hakre

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

19

প্লাগইনটির ফোল্ডারের নাম পরিবর্তন করা যাক

/ Plugins / এখানে pluginname / {বিভিন্ন}

ফোল্ডারের জন্য ব্যবহৃত "প্লাগইননাম" সর্বদা পরিবর্তনযোগ্য হওয়া উচিত।

এটি সাধারণত ধ্রুবকগুলি সংজ্ঞায়িত করে এবং প্লাগইন জুড়ে নিয়মিতভাবে সেগুলি ব্যবহার করে পরিচালনা করা হয়।

বলার অপেক্ষা রাখে না যে অনেক জনপ্রিয় প্লাগইন পাপী।

সম্পর্কিত:

  • plugins_url() প্লাগইন সহ অন্তর্ভুক্ত রিসোর্সগুলির সাথে সহজে লিঙ্ক করার জন্য।

প্লাগিনের ফোল্ডারটির নতুন নামকরণের ফলে স্বয়ংক্রিয় আপডেটগুলি ভেঙে যাবে, তাই আমি নিশ্চিত নই যে এটি করা সবচেয়ে ভাল thing
mtekk

যেভাবেই হোক পরিবর্তনটি করার পরে আপনাকে প্লাগইনটি পুনরায় সক্ষম করতে হবে (নাম পরিবর্তনের ফলে প্লাগইন নিষ্ক্রিয় হওয়ার সম্ভাবনা রয়েছে), যেখানে ডাব্লুপি প্লাগইন সম্পর্কিত উপযুক্ত ডিবি এন্ট্রি পুনরায় তৈরি বা আপডেট করবে (সুতরাং এটি হবে না আপডেটগুলি বিরতি)
t31os

ধ্রুবক ব্যবহারের পরিবর্তে, plugin_basename(__FILE__)প্লাগইনের স্থানীয় নামটি বের করতে ব্যবহার করুন। এটি একই প্লাগইনের অনুলিপিগুলির জন্য দরকারী (পরীক্ষার জন্য, অন্য কোথাও একাধিক অ্যাকাউন্ট তবে প্লাগইন প্রতি শুধুমাত্র একটি, ...)।
রাফেল

19

ওয়ার্ডপ্রেস ব্যবহার করুন (অন্তর্নির্মিত) ত্রুটি পরিচালনা করা

return;কিছু ব্যবহারকারীর ইনপুট ভুল ছিল না শুধুমাত্র । তাদের বিতরণ সম্পর্কে কিছু তথ্য ভুল ছিল।

function some_example_fn( $args = array() ) 
{
    // If value was not set, build an error message
    if ( ! isset( $args['some_value'] ) )
        $error = new WP_Error( 'some_value', sprintf( __( 'You have forgotten to specify the %1$s for your function. %2$s Error triggered inside %3$s on line %4$s.', TEXTDOMAIN ), '$args[\'some_value\']', "\n", __FILE__, __LINE__ ) );

    // die & print error message & code - for admins only!
    if ( isset( $error ) && is_wp_error( $error ) && current_user_can( 'manage_options' ) ) 
        wp_die( $error->get_error_code(), 'Theme Error: Missing Argument' );

    // Elseif no error was triggered continue...
}

সবার জন্য একটি ত্রুটি (বস্তু)

বুটস্ট্র্যাপের সময় আপনি আপনার থিম বা প্লাগইনটির জন্য একটি বিশ্বব্যাপী ত্রুটি স্থাপন করতে পারেন:

function bootstrap_the_theme()
{
    global $prefix_error, $prefix_theme_name;
    // Take the theme name as error ID:
    $theme_data = wp_get_theme();
    $prefix_theme_name = $theme_data->Name;
    $prefix_error = new WP_Error( $theme_data->Name );

    include // whatever, etc...
}
add_action( 'after_setup_theme', 'bootstrap_the_theme' );

পরে আপনি চাহিদা অনুসারে সীমাহীন ত্রুটি যুক্ত করতে পারেন:

function some_theme_fn( $args )
{
    global $prefix_error, $prefix_theme_name;
    $theme_data = wp_get_theme();
    if ( ! $args['whatever'] && current_user_can( 'manage_options' ) ) // some required value not set
        $prefix_error->add( $prefix_theme_name, sprintf( 'The function %1$s needs the argument %2$s set.', __FUNCTION__, '$args[\'whatever\']' ) );

    // continue function...
}

তারপরে আপনি আপনার থিমের শেষে এগুলি সমস্ত আনতে পারবেন। এইভাবে আপনি পৃষ্ঠাটি রেন্ডারিংয়ে বাধা দেবেন না এবং এখনও বিকাশের জন্য আপনার সমস্ত ত্রুটি আউটপুট করতে পারেন

function dump_theme_errors()
{
    global $prefix_error, $prefix_theme_name;

    // Not an admin? OR: No error(s)?
    if ( ! current_user_can( 'manage_options' ) ! is_wp_error( $prefix_error ) )
        return;

    $theme_errors = $prefix_error->get_error_messages( $prefix_theme_name );
    echo '<h3>Theme Errors</h3>';
    foreach ( $theme_errors as $error )
        echo "{$error}\n";
}
add_action( 'shutdown', 'dump_theme_errors' );

আপনি এই প্রশ্নে আরও তথ্য পেতে পারেন । "একসাথে কাজ করা" ঠিক করার জন্য সম্পর্কিত টিকিট WP_Errorএবং wp_die()সেখান থেকে সংযুক্ত এবং অন্য একটি টিকিট অনুসরণ করবে। মন্তব্য, সমালোচক এবং যেমন প্রশংসা করা হয়।


আপনি যদি কেবলমাত্র এর বৈশিষ্ট্যগুলিতে অ্যাক্সেস করেন এবং কখনই কোনও বস্তু হিসাবে উদাহরণটি পাস না করেন তবে আপনি কেন কোনও WP_Error অবজেক্ট ইনস্ট্যান্ট করবেন?
অধ্যাপক

@ প্রফিকে আমি এটিকে সংক্ষিপ্ত করে তুলতে চেষ্টা করেছি এবং এর শিরোনাম / সামগ্রীটি wp_die();ভুল ছিল (বিপরীত)। আপনার প্রশ্ন সম্পর্কে) আমি এটি সম্পূর্ণরূপে পাই না। আপনি যখন WP_Error ক্লাসের একটা নিদর্শন স্থাপন তোমার মত ফাংশন মাধ্যমে তার ডেটা পূর্ণ প্রবেশাধিকার আছে get_error_code();, get_error_message();, get_error_data();ও বহুবচন সংস্করণ। আপনি আপনার থিম বা প্লাগইনগুলির বুটস্ট্র্যাপে একবার এটি ইনস্ট্যান্টিয়েট $error->add();করতে পারেন এবং অন্য ত্রুটিগুলি পূরণ করতে এবং শেষ পর্যন্ত $error->get_error_messages();এগুলি সবগুলি খুঁজে পেতে ফুটারে আউটপুট দিতে পারেন ।
কায়সার

@ প্রফেক আমি এই প্রশ্নে ভবিষ্যতের আপডেটগুলি পোস্ট করব । আমি বর্তমানে ডাব্লিউপি ত্রুটি শ্রেণীর আচরণটি নিরীক্ষণ করছি এবং একটি পাবলিক থিম ত্রুটি এপিআই (টেক্সট ইতিমধ্যে সম্পন্ন হয়েছে) সম্পর্কে টিকিট লিখতে চাই। আপনি আর একটি টিকিটের লিঙ্ক পাবেন যা নিয়ে আসে WP_Errorএবং wp_die()আরও একসাথে (ইতিমধ্যে একটি প্যাচ রয়েছে) Q এর নীচে Any কোনও মন্তব্য, পরামর্শ, সমালোচক এবং অন্যরকম প্রশংসা করা।
কায়সার

18

নামগুলি মিনিমাইজ করুন গ্লোবাল নেমস্পেসে যুক্ত করা নাম

একটি প্লাগ ইন করা উচিত এটা কমাতে প্রভাব এর দ্বারা যতটা সম্ভব নামের সংখ্যা বিশ্বব্যাপী নামস্থান যোগ কমানোর

প্লাগইন এর ফাংশনগুলিকে ক্লাসে এনপ্যাপুলেট করে বা পিএইচপি নেমস্পেস বৈশিষ্ট্যটি ব্যবহার করে এটি করা যেতে পারে । সমস্ত কিছু উপসর্গ করা পাশাপাশি সহায়তা করতে পারে তবে এটি নমনীয় নয়।

ফাংশন এবং ক্লাসগুলির পাশে, একটি প্লাগইনে গ্লোবাল ভেরিয়েবলগুলি প্রবর্তন করা উচিত নয় । ক্লাস ব্যবহার করা সাধারণত তাদের অচল করে দেয় এবং এটি প্লাগইন রক্ষণাবেক্ষণকে সহজতর করে।

সংশ্লিষ্ট


আপনি কি দয়া করে "গ্লোবাল ভেরিয়েবলগুলি প্রবর্তন করবেন না" এর নিজের উত্তরে সরিয়ে নিতে পারেন? এটি এই প্রশ্ন থেকে আলাদা করে সম্পর্কিত এবং আসলে আমি বিতর্ক করতে চাই (উভয় কারণেই আমি মনে করি যে আমি একমত হতে পারি না বিশেষ মামলা এবং কারণ আমি অন্যের মতামত থেকে শিখতে চাই।)
মাইকচিনকেল

17

পিএইচপিডোক ব্যবহার করে মন্তব্য করুন

সেরা অনুশীলন পিএইচপিডোক শৈলীর কাছাকাছি। আপনি যদি "Eclipse" এর মতো আইডিই ব্যবহার না করেন তবে আপনি পিএইচপিডোক ম্যানুয়ালটি একবার দেখে নিতে পারেন ।

এটি ঠিক কীভাবে কাজ করে তা আপনাকে জানতে হবে না। পেশাদার বিকাশকারীরা যেভাবেই কোডটি পড়তে পারেন এবং সংক্ষিপ্তসার হিসাবে এটি প্রয়োজন। শখ কোডার এবং ব্যবহারকারীরা আপনি যেভাবে এটি একই জ্ঞানের স্তরে ব্যাখ্যা করেছেন তার প্রশংসা করতে পারে।


17

Add_option এর আগে সেটিংস API ব্যবহার করুন

অ্যাড_পশন ফাংশনের মাধ্যমে ডিবিতে বিকল্পগুলি যুক্ত করার পরিবর্তে আপনার সেটিংস এপিআই ব্যবহার করে আপনার জন্য সমস্ত কিছু যত্ন নেওয়ার জন্য এগুলি হিসাবে এগুলি সংরক্ষণ করা উচিত ।

Add_option এর আগে থিম পরিবর্তনসমূহ API ব্যবহার করুন

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


1
এবং তদ্ব্যতীত, ব্যবহার করুন update_optionএবং কখনই না add_option, আপডেট ফাংশনটি উপস্থিত না থাকলে বিকল্পটি তৈরি করবে .. :)
t31os

3
আমি বলবো না কখনই ব্যবহার করবেন না add_optionadd_optionযেখানে ইতিমধ্যে বিকল্পটি সেট করা আছে, এটি পরিবর্তিত হয়নি, সেখানে ব্যবহারের একটি ভাল কেস রয়েছে তাই আমি ইতিমধ্যে বিদ্যমান ব্যবহারকারীর পছন্দগুলি সংরক্ষণ করার জন্য এটি সক্রিয়করণে ব্যবহার করি।
অধ্যাপক

1
এর জন্য আরেকটি ব্যবহারের ক্ষেত্রে add_optionহ'ল যখন আপনি স্পষ্টভাবে অটো লোডিং অক্ষম করতে চান। update_optionঅটোল্যাডকে সত্যে চাপিয়ে দেবে, সুতরাং আপনি অটোল্যাড অক্ষম করতে চান, add_optionপ্রাথমিকভাবে বিকল্পটি তৈরি করার সময় ব্যবহার করুন ।
ডেভ রোমসে

16

প্লাগইন ব্যবহারকারীদের গোপনীয়তা রক্ষা করুন

(পূর্বে: বেনামে এপিআই যোগাযোগ)

যদি কোনও প্লাগ-ইন কোনও বাহ্যিক সিস্টেম বা API (যেমন কিছু ওয়েবসার্চ) এর সাথে যোগাযোগ করে তবে এটি বেনামে করা উচিত বা ব্যবহারকারীকে একটি বেনামে বিকল্প সরবরাহ করা উচিত যা নিশ্চিত করে যে প্লাগইন ব্যবহারকারীর সাথে সম্পর্কিত কোনও ডেটা দ্বিতীয় পক্ষের অনিয়ন্ত্রিতভাবে ফাঁস হয় না।


15

WordPress.org.org এ প্লাগইনগুলি হোস্ট করুন

হোস্টিং প্লাগইনগুলির জন্য WordPress.org এ সরবরাহিত এসভিএন সংগ্রহস্থল ব্যবহার করুন । এটি ব্যবহারকারীর অভিজ্ঞতার জন্য সহজতর অভিজ্ঞতা তৈরি করে এবং আপনি যদি এসভিএন এর আগে কখনও ব্যবহার করেন না, তবে এটি প্রাসঙ্গিকভাবে এটি ব্যবহার করে সত্যকে বুঝতে পারা যায় যা এটি সমর্থন করে।


15

অনুমতি ব্যবহার করে অ্যাক্সেস নিয়ন্ত্রণ সরবরাহ করুন

অনেক ক্ষেত্রে, ব্যবহারকারীরা আপনার প্লাগইন দ্বারা তৈরি বিশেষত প্লাগইনগুলি যে একাধিক জটিল ক্রিয়াকলাপগুলি ব্যবহার করে সেগুলিতে সবার অ্যাক্সেস না চাইতে পারে a

খুব কমপক্ষে, আপনার প্লাগইন যে বিভিন্ন ধরণের পদ্ধতির জন্য ব্যবহার করা যেতে পারে তার সমস্তগুলির জন্য যথাযথ দক্ষতা যাচাই করুন।


12

প্লাগিন সেটিংস আমদানি / রফতানি করুন

এটা যে প্লাগিন জুড়ে সাধারণ নয়, কিন্তু যদি আপনার প্লাগইন (কিছু) সেটিংস আছে, এটা করা উচিত কনফিগারেশন এবং ব্যবহারকারীর ইনপুট মত ডেটার আমদানি / রপ্তানি প্রদান

আমদানি / রফতানি একটি প্লাগইনের ব্যবহারযোগ্যতা উন্নত করে।

যেমন একটি আমদানি ও রফতানি কার্যকারিতা (এবং সেই সাথে একটি পূর্বাবস্থায় আনতে হবে) এমন একটি প্লাগইন হ'ল Breadcrumb NavXT (ওয়ার্ডপ্রেস প্লাগইন) (সম্পূর্ণ প্রকাশ: সেখানে আমার দ্বারা কিছুটা ছোট কোড, বেশিরভাগটি মেটেক দ্বারা করা হয়েছে)।

সংশ্লিষ্ট


12

আপনার কোডটি সংগঠিত করুন

কোডটি পড়া যেভাবে কার্যকর হয় তার ক্রমে লিখিত হয়নি তা পড়া সবসময়ই শক্ত। প্রথমে wp_enqueue_style এবং _script ইত্যাদি নির্ধারণ করুন / প্রয়োজনীয়তা অন্তর্ভুক্ত করুন, তারপরে প্লাগইন / থিমের যে কাজগুলি প্রয়োজন এবং শেষ পর্যন্ত নির্মাতা (প্রাক্তন অ্যাডমিন স্ক্রিন, থিমের সাথে সংহত হওয়া স্টাফ ইত্যাদি) অন্তর্ভুক্ত করুন।

CSS এবং js এর মতো জিনিসগুলিকে তাদের নিজস্ব ফোল্ডারে আলাদা করার চেষ্টা করুন। আরে ফ্ল্যাটনার এবং অনুরূপ মতো কেবল সহায়তাকারী ফাংশনগুলির সাথে এটি করার চেষ্টা করুন। "মুখ্য" ফাইলটিকে যতটা পরিষ্কার এবং সহজেই পড়া সহজ হিসাবে চালিয়ে রাখা এমন এক উপায় যা ব্যবহারকারী, বিকাশকারী এবং আপনাকে সাহায্য করে যখন আপনি এক বছরে আপডেট করার চেষ্টা করেন এবং কোডটি বেশি দিন দেখেননি।

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


আমি আশঙ্কা করি যে স্টাইলটি সম্পর্কে লোকেরা বিতর্ক করবে এবং উদ্দেশ্যমূলক সেরা অভ্যাসগুলির সাথে নয় যাঁর সাথে সম্মানিত সমস্ত লোক সম্মত হবে about এটি অত্যন্ত গুরুত্বপূর্ণ আমরা কেবল উদ্দেশ্যমূলক সর্বোত্তম অনুশীলনগুলিকেই সম্বোধন করি যাতে লোকেরা যত ভালই বোঝানো যায় না কেন বিতর্কিত আইটেমগুলির বিরোধিতা করে তালিকাটিকে "আশীর্বাদ" করতে সম্মত হবে।
মাইকচিন্কেল

11

স্টাইল দিয়ে মরা

একটি শালীন পদ্ধতিতে মারা যান সমস্ত প্লাগইন (এবং এমনকি থিম) ফাংশনগুলির wp_die()সমালোচনামূলক স্থানে ব্যবহারকারীর কী হয়েছে সে সম্পর্কে একটি সামান্য তথ্য দেওয়ার জন্য ব্যবহার করা উচিত । পিএইচপি ত্রুটিগুলি বিরক্তিকর এবং wp_dieব্যবহারকারীরা প্লাগইন (বা তারা) কী ভুল করেছে তাতে একটি সুন্দর স্টাইলযুক্ত বার্তা দিতে পারে। এছাড়াও, যদি ব্যবহারকারী ডিবাগিং নিষ্ক্রিয় করে থাকে তবে প্লাগইনটি কেবল ভেঙে যাবে।

ব্যবহার wp_die()এছাড়াও সাহায্য করে আপনার প্লাগিন / থিম সঙ্গে সামঞ্জস্যপূর্ণ ওয়ার্ডপ্রেস testsuite

সম্পর্কিত:

11

ব্যবহারকারীদের জন্য সহায়তা স্ক্রীন সরবরাহ করুন

বার বার প্রশ্নের উত্তর দেওয়ার চেয়ে উত্তর হিসাবে আরটিএফএম (ক্লিক সহায়তা) বলা ভাল is

/**
  * Add contextual help for this screen
  * 
  * @param $rtfm
  * @uses get_current_screen
  */ 
  function ContextualHelp( /*string*/ $rtfm) 
  { 
     $current_screen = get_current_screen();
     if ($current_screen->id == $this->_pageid) 
     {
        $rtfm .= '<h3>The WordPress Plugin - Screen A</h3>';
        $rtfm .= '<p>Here are some tips: donate to me ' .
     }
     return $rtfm; 
  }
add_action('contextual_help', array($this,'ContextualHelp'),1,1);

আপডেট / নোট: (কায়জারের মন্তব্য দেখুন): উপরের উদাহরণটি একটি শ্রেণিতে ব্যবহার করা উচিত


Everyones টুলবক্সে থাকা উচিত (যতক্ষণ না আপনাকে একটি স্পেসিফিক অ্যাডমিন ইউআই স্ক্রিনটি ব্যাখ্যা করতে হবে)। +1
কায়সার

বিটিডব্লু: আপনার উল্লেখ করা উচিত, এটি কোনও ক্লাসে থাকতে হবে এবং কীভাবে $ এটি -> _ পৃষ্ঠা_আইডি এর সাথে ইন্টারেক্ট করতে হবে এবং আপনি যদি একটি ফাংশন.এফপি বা প্লাগইন ফাইল থেকে ক্লাস ছাড়াই অ্যাকশন হুক যুক্ত করেন তবে তা কেমন হবে তা বোঝাতে হবে should ।
কায়সার

10

এক্সটেনসিবল ফর্ম সরবরাহ করুন

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

দেখুন: সেটিংস এপিআই

সংশ্লিষ্ট


9

হুক মাধ্যমে সর্বদা ফাংশন অন্তর্ভুক্ত, সরাসরি না।

উদাহরণ:

  • হুক ছাড়াই নতুন মাধ্যমে প্লাগইনটির শ্রেণি অন্তর্ভুক্ত করার জন্য ব্যবহার করবেন না

  • হুক প্লাগইন_ লোড ব্যবহার করুন

    // add the class to WP                                   
    function my_plugin_start() {                                                               
        new my_plugin();   
    }                                                        
    add_action( 'plugins_loaded', 'my_plugin_start' );

আপডেট: একটি ছোট লাইভ উদাহরণ: প্লাগিন-এসএনএন-ট্রাঙ্ক-পৃষ্ঠা এবং ছদ্ম উদাহরণ example

//avoid direct calls to this file where wp core files not present
if (!function_exists ('add_action')) {
        header('Status: 403 Forbidden');
        header('HTTP/1.1 403 Forbidden');
        exit();
}

if ( !class_exists( 'plugin_class' ) ) {
    class plugin_class {

        function __construct() {
        }

    } // end class

    function plugin_start() {

        new plugin_class();
    }

    add_action( 'plugins_loaded', 'plugin_start' );
} // end class_exists

আপনি মাল্টিসাইট ইনস্টল-এ থাকা মুড_প্লাগিন_-এর মাধ্যমেও লোড করতে পারেন, ক্রিয়াকলাপের রেফারেন্সের জন্য কোডেক্স দেখুন: http://codex.wordpress.org/Plugin_API/Action_References এছাড়াও আপনি এখানে দেখতে পারেন, কীভাবে এই হুকের সাহায্যে ডাব্লুপিপি: http: // অ্যাডামব্রাউন। তথ্য / পি / ডাব্লুপি_হুকস / হুক / প্লাগইন_লোড হয়েছে? সংস্করণ = ২.১ & ফাইল = ডাব্লুপি-সেটিংস.পিএপি আমি এটি প্রায়শই ব্যবহার করি এবং এটি এত কঠোর এবং তাড়াতাড়ি নয়, একটি হার্ড নতুন শ্রেণি হিসাবে উন্নত ();


@ বুয়েটিজ --- আপনি কি আরও কিছুটা ব্যাখ্যা করতে পারেন
নেটকন্সট্রাক্টর.কম

3
একটি ছোট্ট লাইভ উদাহরণ: [প্লাগিন-এসএনএন-ট্রাঙ্ক-পৃষ্ঠা] svn.wp-plugins.org/filter-rewrite-rules/trunk/… এবং একটি ছদ্ম উদাহরণ //avoid direct calls to this file where wp core files not present if (!function_exists ('add_action')) { header('Status: 403 Forbidden'); header('HTTP/1.1 403 Forbidden'); exit(); } if ( !class_exists( 'plugin_class' ) ) { class plugin_class { function __construct() { } } // end class function plugin_start() { new plugin_class(); } add_action( 'plugins_loaded', 'plugin_start' ); } // end class_exists
বেল্টেজ

2
@ নেটকন্সট্রাক্টর.কম - আমি থ্রেডটি আপডেট করেছি, মন্তব্যটি কোডের জন্য কুৎসিত
21:44 এ বেল্টেজ করুন

8

একটি জিপিএল সামঞ্জস্যপূর্ণ লাইসেন্সের অধীনে লাইসেন্স প্লাগইন

প্লাগ-ইনগুলি এবং থিমগুলিকে ওয়ার্ডপ্রেস-সামঞ্জস্যপূর্ণ লাইসেন্সের আওতায় লাইসেন্স দেওয়া উচিত । এটি তাদের "প্রোগ্রাম" হিসাবে ওয়ার্ডপ্রেসে পুনরায় বিতরণে সক্ষম করে। একটি প্রস্তাবিত লাইসেন্স হ'ল জিপিএলপ্লাগ-ইন সহ অন্তর্ভুক্ত সমস্ত কোড লাইব্রেরি একই লাইসেন্সের সাথে সামঞ্জস্যপূর্ণ কিনা সেদিকে খেয়াল রাখুন।

(এটি অতীত এবং বর্তমান উভয় ক্ষেত্রেই একটি সমস্যা এবং গুরুতর বিতর্ক হয়েছে ।)


এই মুহুর্তের জন্য জিপিএল সামঞ্জস্যের সাথে এটি ছেড়ে দেওয়া যাক: core.trac.wordpress.org/ticket/14685
hakre

8

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

আপনার প্লাগইনটি যদি খুব সাধারণ না হয় তবে আপনার কতোটা সহজ তা নিয়ে আপনার দাম্ভিকতা এড়ানো উচিত। আপনার বিবরণে সেটিংসের লিঙ্কের মতো দরকারী লিঙ্কগুলি অন্তর্ভুক্ত করা উচিত।


7

রিমোট ডেটাসোর্সেস এবং ওয়েব সার্ভিসগুলির পার্শ্ব প্রতিক্রিয়া হ্রাস করুন

একটি প্লাগইন উচিত ক্যাশে / ঢাল webservice এবং / অথবা XMLRPC / একটি ক্যাশে / ডেটা-প্রদানকারী স্তরের মধ্য দিয়ে সাবান অনুরোধ যদি আপনি তাদের তাই (ধীর) webservice প্রতিক্রিয়ার জন্য অপেক্ষা করার ফ্রন্ট-অনুরোধ উপার্জন না করার ব্যবহার করুন।

এর মধ্যে আরএসএস ফিড এবং অন্যান্য পৃষ্ঠাগুলি ডাউনলোড অন্তর্ভুক্ত রয়েছে। আপনার প্লাগইনগুলি ডিজাইন করুন যাতে তারা পটভূমিতে ডেটার জন্য অনুরোধ করে।

একটি সম্ভাব্য পদক্ষেপ হ'ল (উদাহরণ হিসাবে পিং.এফএম পোস্ট করুন): একটি বাফার টেবিল তৈরি করুন, আসুন বলুন: পিং_এফএম_ফুফার_পোস্ট (তারিখ, সময়, বার্তা, দাখিল_কাল, স্থিতি)

  1. প্রতিবার আপনি পিং.এফএম-তে আপডেট জমা দিতে চান, এটি এই টেবিলটিতে যুক্ত করুন।
  2. এখন, এই ডেটা পরিচালনা করার জন্য আমাদের একটি প্লাগইন তৈরি করতে হবে। এই প্লাগইনটি এখনও জমা না দেওয়া প্রতিটি আপডেটের জন্য ক্রন্টব দিয়ে চালানো হবে
  3. আমাদের এই টেবিলটি রয়েছে তাই আমরা পিং.এফএম-এ জমা দেওয়া প্রতিটি বার্তাও তালিকাভুক্ত করতে পারি এবং প্রতিটি পোস্টের স্থিতি পরীক্ষা করতে পারি। যদি পিং.এফএম এর পক্ষ থেকে সমস্যা হয় তবে আমরা এটি পুনরায় জমা দিতে পারি।

আপনি সত্যিকার অর্থে কোথায় চলেছেন তা আমি সত্যিই বুঝতে পারি না। আপনি সমর্থনকারী উপাদান কিছু লিঙ্ক সরবরাহ করতে পারেন?
মাইকচিনকেল

এছাড়াও, "নেট ওভারহেড" কী তা আমি ঠিক নিশ্চিত নই । এর চেয়ে ভাল শব্দ নেই? যদি এটি আরও পরিষ্কার হয় তবে এটি আরও ভাল উদ্দেশ্যমূলক নিয়ম হবে। এবং "প্রতিরোধ" অসম্ভব; পরিবর্তে "মিনিমাইজ" ?
মাইকচিনকেল

তুমি সম্ভবত সঠিক. খারাপ কথা বলা এবং প্রতিরোধ করা কখনই সম্ভব নয়, ভাল ফিটগুলি হ্রাস করুন।
hakre

7

আপনার প্লাগইনটি পরীক্ষা করুন

আমাদের প্লাগইন বিকাশের পরিবেশে অবশ্যই পরীক্ষার কিছু সরঞ্জাম থাকা উচিত।

উপর ভিত্তি করে এই উত্তর দ্বারা ইথান Seifert একটি পরীক্ষার প্রশ্ন করার জন্য, এই ভাল অনুশীলন অনুসরণ করতে চলেছেন:

  • আপনার ইউনিট পরীক্ষায় কোনও শ্রেণি সম্পাদন করতে পারে এমন ক্ষুদ্রতম আচরণের পরীক্ষা করা উচিত।
  • আপনি যখন কার্যকরী পরীক্ষার স্তরে পৌঁছান এটিই আপনি ওয়ার্ডপ্রেস নির্ভরতার সাথে কোড পরীক্ষা করতে পারবেন।
  • আপনার প্লাগইন কী করে তার উপর নির্ভর করে - আইডি ব্যবহার করে ডিওমে ডেটার উপস্থিতির জন্য পরীক্ষা করে এমন সেলেনিয়াম-ভিত্তিক পরীক্ষাগুলি ব্যবহার করে বিবেচনা করুন

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

1
তবে সর্বনিম্ন প্রথমটি আচ্ছাদন করা বুনিয়াদি, যাতে আপনি উত্তর হিসাবে ওয়ার্ডপ্রেসের সাথে কার্যকরী পরীক্ষায় পৌঁছাতে পারেন, তাই না?
ফার্নান্দো ব্রায়ানো

1
এটি একটি প্লাগইন যা অ্যাপ্লিকেশন নয়, আপনি কি জাভা রানটাইম ছাড়াই জাভা অ্যাপ্লিকেশনটি পরীক্ষা করতে পারবেন? হ্যাঁ, জাভাটিকে মকআপ হিসাবে লিখে তারপরে আপনার প্লাগইনটি পরীক্ষা করুন। সম্ভাব্যতাগুলি হ'ল বাগগুলি আপনার মকআপে রয়েছে। *) অস্বীকৃতি বা দেশীয় কোডে এটি সংকলন।
এডেলওয়াটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.