থিমের প্লাগেবল ফাংশন কীভাবে ওভাররাইড করবেন?


10

আমি যে সমস্ত ডকুমেন্টেশনের মুখোমুখি হয়েছি তা আপনার প্লাগইনটির মাধ্যমে প্লাগেবল ফাংশনকে ওভাররাইড করার বিষয়ে আলোচনা করে।

আপনি যদি পরিবর্তে থিম বিকাশ করছেন?

আমার ফাংশন.এফপিএকে অন্য ফাইলের প্রয়োজন যা get_user_by()ফাংশনটিকে ওভাররাইড করে , এতে সংজ্ঞায়িত করা হয় pluggable.php

আমি যদি if( function_exists() )কলটি বাদ দিই তবে আমি "পুনরায় ঘোষণা করতে পারি না ..." ত্রুটিটি পাই।

যদি আমি if( function exists() )কলটি অন্তর্ভুক্ত করি , তবে আমি কোনও ত্রুটি পাই না, তবে অবশ্যই আমার ফাংশনটি তখন উপেক্ষা করা হবে, যেহেতু প্লাগযোগ্য সংস্করণটি বিদ্যমান।

উপর ডমিনিক এর সন্ত্রস্ত পোস্টে ভিত্তি করে ওয়ার্ডপ্রেস প্রারম্ভে অর্ডার , এটা স্পষ্ট যে pluggable.phpলোড হয় আগে আপনার থিমের functions.phpএবং তাই ঘোষণা, যাতে ত্রুটি ব্যাখ্যা করে।

সুতরাং প্রশ্নটি হ'ল - আপনি কীভাবে কোনও থিমের মধ্যে থেকে সেই দুর্দান্ত প্লাগেবল আর্কিটেকচারের সুবিধা নিতে পারেন, যাতে প্লাগইনগুলি লেখার জন্য অবলম্বন না করেই থিমটি দিয়ে বান্ডেল করা বা ইনস্টল করতে হবে?

আরও দ্রষ্টব্য : সুতরাং এটি যুক্তিযুক্ত হয় যে থিমগুলি প্লাগইনগুলি যা করার চেষ্টা করা উচিত নয়। তবে সেই যুক্তিটি চার বছরেরও বেশি পুরানো (৪-সংখ্যার ট্র্যাক নম্বর অনুযায়ী)। আমি আজকের থিম বিকাশের জটিল টপোলজির জটিল টপোলজিকে দিয়ে এই দর্শনটি এখনও প্রযোজ্য কিনা তা আমি কিছু ভারী হিটারের কাছ থেকে শুনতে চাই love আমি বিশ্বাস করতে চাই আমরা তখন থেকেই বিকশিত হয়েছি।

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

এটি আমার কাছে প্লাগইনগুলির জন্য ব্যবহারের মতো শোনায় না। থিমটি ইনস্টল করা আছে, টুয়েন্টি ইলেভেনের চাইল্ড থিম, হতে পারে একটি স্ট্যান্ডলোন, এর ফাংশন ডাব্লুএইচপি সহ একটি বোট লোডে কল করে, প্রত্যেকে প্রশ্নে থাকা সিএমএসের বিভিন্ন দিক পরিচালনা করে। তারপরে থিম টেমপ্লেট ফাইলগুলি কাস্টম 'টেম্পলেট ট্যাগ' ব্যবহার করে যা অন্তর্ভুক্তগুলিতে সংজ্ঞায়িত করা হয়। আমি কিছু প্লাগইন বা অন্যান্য সক্রিয় হওয়া ইত্যাদির উপর নির্ভরতা সহ থিম ফাইলগুলি রাখতে চাই না etc. ইত্যাদি সিস্টেমের মধ্যে জটিলতা গড়ে তোলার কোনও মানে হয় না। নিশ্চিত, আমি এটা অবশ্যই ব্যবহারযোগ্য প্লাগিন ফোল্ডারে লাগাতে পারেন, কিন্তু যে এখনও একটি হ্যাক মত আর - ডান এখন সবকিছু সঙ্গে এই প্রকল্পের জন্য তৈরি কাস্টমাইজেশন অন্তর্ভুক্ত করা হয় কি আছে যে wp-content/themes/my-theme/। আমি কিছু প্লাগইন ফোল্ডারগুলিতে স্টাফ অনুসন্ধান করার বিষয়টিও বিবেচনা করতে চাই না।

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



সাদা করার জন্য, কেন টিকিটটি আবার বন্ধ করা হয়েছিল, কেন তা সম্পর্কে একটি ভাল ব্যাখ্যা দিয়ে।
টম অ্যাগার

উত্তর:


10

আপনি যদি এটি কোনও একক ক্লায়েন্টের জন্য তৈরি করে থাকেন তবে আপনার একেবারে সুবিধা নেওয়া উচিত mu-plugins

ওয়ার্ডপ্রেসে অনেক কিছুই রয়েছে যা আপনি করতে পারবেন না functions.php। প্লাগেবল ফাংশনগুলির মধ্যে একটি, তবে আরও স্পষ্টতই, বেশ কয়েকটি হুক (ক্রিয়া এবং ফিল্টার উভয়) এর আগে আগুন functions.php। কিছু ক্ষেত্রে, এই হুকগুলি নিয়মিত প্লাগইনগুলির আগেও আগুন জ্বলে mu-pluginsওঠে , যার জন্য আপনাকে ব্যবহার করতে বা একটি নেটওয়ার্ক-সক্রিয় প্লাগইন প্রয়োজন। এখনও অন্যান্য ক্ষেত্রে, এমনকি একটি মু-প্লাগইন অনেক দেরি করে। সম্ভবত আপনার কিছু দরকার sunrise.php। বা এমনকি কিছু (একটি ধ্রুবক বা অন্যথায়) wp-config.php

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

আমি এখনও ছয় বছর পরে অ্যান্ডি স্কেলটনের সাথে একমত - "একটি থিমের ফাংশন ফাইল এবং একটি প্লাগইনের মধ্যে অনেক পার্থক্য রয়েছে। আসুন আমরা সেভাবেই রাখি" "

যে সমস্ত একপাশে, এই মত পরিবর্তন কখনও ঘটতে পারে না। এতে অনেক কিছু ভেঙে যায়। এর শরীরে অগণিত থিমগুলি কল করে ফাংশনগুলি functions.phpমারাত্মক ত্রুটির কারণ যদি pluggable.phpইতিমধ্যে লোড না করা থাকে - যেমন current_user_can(), বা wp_create_nonce()। তারা সবাই ব্যর্থ হত। এবং এটি প্লাগইনগুলিও ভেঙে ফেলত যা সাধারণত এই ফাংশনগুলিকে কল করতে শুরু করে plugins_loaded। (কেবলমাত্র pluggable.phpনীচে সরান wp-settings.phpএবং আমি বাজিতে পারি যে অর্ধেক কোরটি ভেঙে যাবে - বা খুব কমপক্ষে কাস্টমাইজারটি দেবে))

অবশেষে, একটি অনিবার্য ধারণা রয়েছে যে কোনও থিমের মতো একটি পৃথক ফাইল অন্তর্ভুক্ত থাকতে পারে pluggable.phpযা আমরা প্লাগইনগুলি লোড করার সাথে সাথেই লোড করতে পারি এবং অতএব প্লাগযোগ্য ফাংশনগুলিকে ওভাররাইড করতে পারে। এটি একটি খারাপ ধারণা হওয়া ছাড়াও (এই মন্তব্যের প্রথম চারটি অনুচ্ছেদ দেখুন) এটি এখনও সামঞ্জস্যপূর্ণ হবে না, কারণ setup_themeহুক অবধি , স্টাইলশিট এবং টেম্পলেট মানগুলি ফিল্টার করে কোন থিমটি লোড করা হবে সেটিকে ওভাররাইড করতে পারে।

দুর্ভাগ্যক্রমে, ওয়ার্ডপ্রেসটি কীভাবে আর্কিটেক্ট করা হয়েছে তা দেওয়া ঠিক এটি টেকসই নয়। ভাল জিনিস হ'ল এটি করার অনেকগুলি উপায় (আরও ভাল)।

(মূলত এখানে পোস্ট করুন: http://core.trac.wordpress.org/ticket/2479# মন্তব্য :5 )


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

5

একবারে বন্ধ প্রকল্পের প্রসঙ্গে, অবশ্যই ব্যবহারের কোডটি ফেলে দেওয়া একেবারেই উপযুক্ত mu-plugins। যদি "এটি একবারে স্থাপন করা" একটি উদ্বেগের বিষয় হয়ে থাকে তবে কেবল থ্রো mu-plugins-এ ড্রপ-ইন করার জন্য একটি সিমিলিংক তৈরি করুন , তাই থিম ডিরেক্টরিটি অনুসন্ধান করার সময় এটি প্রদর্শিত হবে।


চিহ্নিত করুন, সিমলিংক সম্পর্কে পরামর্শের জন্য ধন্যবাদ। যদিও এটি মাইগ্রেশনে সহায়তা করে না, বিকাশকালে এটি খুব সুবিধাজনক হতে পারে।
টম অ্যাগার

0

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

বুদ্ধিমান সমাধানের নিকটতমতমটিতে কাস্টম অন্তর্ভুক্ত করা হবে wp-config.php(কোড দ্বারা বা ব্যবহারকারীকে জিজ্ঞাসা করে), তবে সেই বান্ডিলিং প্লাগইনের সাথে তুলনা করা সম্ভবত আরও অর্থবোধ করবে।


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