প্লাগইন বিকাশের জন্য আমার কি কাস্টম পোস্ট প্রকার বা কাস্টম ডেটাবেস টেবিলগুলি ব্যবহার করা উচিত?


38

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

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

আমি এখনও আমার সমস্ত ডেটা জানি না, তবে সংযুক্তভাবে সংযুক্ত বেশ কয়েকটি টেবিল (বা সিপিটি) থাকবে। আমি আমার গবেষণা থেকে "ভাইব" পেয়েছি যে কাস্টম ডাটাবেস টেবিলগুলি এড়ানো উচিত, তবে আমি কীভাবে সেরা সমাধান নির্ধারণ করব তা নিশ্চিত নই।

বিশেষত আমি তিনটি ক্ষেত্র সম্পর্কে উদ্বিগ্ন:

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

"সঠিক" উপায় আছে? আপনার ইনপুট জন্য ধন্যবাদ।

উত্তর:


59

আপনার যে কেউ বলেছেন যে একটি একক "ডান" উপায় আছে সে সম্পর্কে সন্দেহ করা উচিত। সঠিক উপায় পরিস্থিতি উপর নির্ভর করে। সিপিটি অবকাঠামো ব্যবহারের অনেকগুলি উল্লেখযোগ্য সুবিধা রয়েছে:

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

সিপিটি এপিআইয়ের সমস্যাগুলি বেশিরভাগ ক্ষেত্রেই এটি পোস্টের রূপকের সাথে অত্যন্ত বিবাহিত এবং এই উপাত্তের সাথে রূপক হিসাবে উপস্থিত হওয়া ডেটা টাইপের সমস্ত দিক থেকেই আসে। মাইএসকিউএল কমান্ড লাইন থেকে চালান DESCRIBE wp_posts। ডাব্লুপি অনুমান করে যে আপনার সামগ্রীর একটি শিরোনাম রয়েছে, এটির (একক) লেখক রয়েছে, আপনাকে কেবল তৈরি তারিখ এবং শেষ-সম্পাদিত তারিখের উপর নজর রাখতে হবে, আপনাকে একটি আন-ইনডেক্সড post_contentইত্যাদির জন্য স্থান প্রয়োজন হবে ইত্যাদি কাজ করে This ভাল কিছু ধরণের বিষয়বস্তুর জন্য, তবে অন্যের জন্য অগত্যা নয়। আপনি ইতিমধ্যে কিছু সম্ভাব্য সমস্যার দিক নির্দেশনা দিয়েছেন:

আমি যদি সেই পথে যাই তবে সিপিটি অনুযায়ী আমার অতিরিক্ত ক্ষেত্রগুলির জন্য পোস্ট মেটাফিল্ডগুলির সংখ্যা প্রয়োজন এবং যদি এটি জিনিসগুলিকে "কৃপণ" করে তোলে

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

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

কীভাবে সম্পর্কগুলি সেরাভাবে পরিচালনা করতে হয়, বিশেষত যদি আমার অনেকের মধ্যে অনেকগুলি সম্পর্ক থাকে

বহু-থেকে-বহু সম্পর্ক হ'ল ডাব্লুপি দেব সম্প্রদায়ের একটি দীর্ঘকালীন স্টিকিং পয়েন্ট ( https://core.trac.wordpress.org/ticket/14513 দেখুন )। আপনি পোস্ট_আইডিতে টেকনোমি আইটেমগুলি ম্যাপিংয়ের মাধ্যমে কাস্টম টেবিলগুলি ব্যবহার না করে এটি নকল করতে পারেন (যাতে, উদাহরণস্বরূপ, আপনি বলতে পারেন যে 'P3 এর সাথে P5 এর সম্পর্ক রয়েছে' P3 ট্যাগটি 'Y-P3' রয়েছে বলে তবে এটি বিভ্রান্তিকর হয়) (এবং অদক্ষ) খুব দ্রুত। আপনি নিজের সম্পর্ক টেবিল তৈরির বিষয়টিও বিবেচনা করতে পারেন যা সিপিটিগুলির সাথে একত্রে লিঙ্ক রয়েছে - আপনি এখনও সিপিটি-র সুবিধা পেতে পারেন এবং কেবল একটি একক ডিবি টেবিল তৈরি করছেন। এই পদ্ধতির একটি সুন্দর-সম্পাদিত সংস্করণের জন্য, পোস্টগুলি 2 পোস্ট প্লাগইন দেখুন: https://wordpress.org/extend/plugins/posts-to-posts/

সুতরাং, শেষে, আপনার উপর ভিত্তি করে সিদ্ধান্ত নেওয়া উচিত:

  • আপনি যে ধরণের ডেটা সংরক্ষণ করবেন - তারা কীভাবে "পোস্ট" হবে
  • যে ধরণের প্রশ্নের প্রয়োজন হবে - সেগুলি কতটা জটিল হবে
  • স্কেল - আপনার কাঙ্ক্ষিত স্কিমাটি কতটা জটিল, আপনার মোট কতগুলি অবজেক্ট থাকবে এবং আপনি কতজন ব্যবহারকারী অনুমান করবেন?

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


3
দুর্দান্ত সংক্ষিপ্তসার।
জেসিএল 1178

1
দ্বিগুণ ভাল উত্তর +1
কায়সার

বাহ, দুর্দান্ত উত্তর বুনে, আপনাকে ধন্যবাদ! খুব কার্যক্ষম ও সংক্ষিপ্ত বিবরণী সহ খুব কার্যকরী সংক্ষিপ্ত তালিকাটি check আমি মনে করি এটি আমার প্রয়োজনীয় দিকটি দেয়। হতে পারে আমি আমার কিছু অবজেক্টস সিপিটি এবং অন্যকে কাস্টম করতে পারি। উভয় বিশ্বের সেরা পেতে আমি 2 টি পোস্টের শৈলীর সম্পর্কের টেবিলটি বিবেচনা করছি। এবং আপনি টিপে টিপ meta_queryটিপটিও দুর্দান্ত!
জেফ

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