মাল্টিসাইটে পুনরায় লেখার নিয়মগুলি কীভাবে নির্ভরযোগ্যভাবে ফ্লাশ করবেন?


20

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

এবং তারপরে একটি সূক্ষ্ম দিন কেউ এটি মাল্টিসাইটে চালানোর চেষ্টা করে।

একটি সাধারণ দৃশ্যের পরিবর্তে:

  1. ওয়ার্ডপ্রেস সাইট তৈরি করা হয়
  2. প্লাগইন ইনস্টল এবং সক্রিয় করা হয়েছে

আপনার কাছে এখন দুঃস্বপ্নের পরিস্থিতি রয়েছে:

  1. প্লাগইন ইনস্টল করা আছে এবং নেটওয়ার্ক সক্রিয়
  2. মাল্টিসাইটে নতুন ওয়ার্ডপ্রেস সাইট (বা একশ) তৈরি করা হয়েছে

তত্ত্বের মধ্যে এটি ঠিক কাজ করা উচিত, তাই না? অনুশীলনে এটি দর্শনীয় উপায়ে ভুল হয়ে যায়:

  • $wp_rewrite রাষ্ট্র ভুল সাইট থেকে হতে পারে
  • switch_to_blog() পুনরায় লেখার স্থিতিও ট্র্যাক করে না
  • "পরে" অংশটি সম্পূর্ণরূপে বিভিন্ন ব্লগে ঘটতে পারে
  • এই সমস্ত অন্যান্য প্লাগইন, আপনার সাথে দুর্দান্ত খেলার কথা, সম্ভবত বিভিন্ন সাইটে ধারাবাহিকভাবে সক্ষম না করা হতে পারে not

উদাহরণস্বরূপ, আপনি এই সমস্যাটি দেখতে পাচ্ছেন যে কীভাবে এটি করার চেষ্টা করা হচ্ছে প্রতিটি সময় নতুন সাইট তৈরি হওয়ার সময় মূল সাইটটিতে পারমিলিকগুলি দূরে সরে যায়

সুতরাং প্লাগইনটি মাল্টিসাইটে পুনর্লিখনের নিয়মগুলি কীভাবে নির্ভরযোগ্যভাবে চালিত হবে :

  1. নতুন সাইটটি কখন তৈরি হবে?
  2. যখন বিদ্যমান সাইটটি নিষ্ক্রিয় থেকে সক্রিয় করা হয় তখন সাইটের জন্য?
  3. যখন প্লাগইন নেটওয়ার্ক সক্রিয় হয়, প্রতিটি সাইটের জন্য?
  4. প্লাগইন যখন নেটওয়ার্ক নিষ্ক্রিয় করা হয়, প্রতিটি সাইটের জন্য?
  5. সম্ভবত অন্যান্য পরিস্থিতিতে, বিশ্বব্যাপী প্রসঙ্গে পুনর্লিখন জড়িত জড়িত?

উত্তর:


11

দ্রষ্টব্য: এটি একটি অসম্পূর্ণ উত্তর যা ক্রমান্বয়ে বাড়ানো হবে


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

global $wp_rewrite;
$wp_rewrite->init(); //important...
$wp_rewrite->flush_rules();

উপরেরটি নিশ্চিত করে যে প্রদত্ত প্রসঙ্গের জন্য সঠিক পারলিমিংক কাঠামোটি পুনরুদ্ধার করা হয়েছে এবং পুনর্লিখনের নিয়মগুলি তৈরি এবং ডেটাবেজে পরিবর্তনগুলি সম্পাদনের আগে সেট করা হয়েছে set

এটি এমন একক সাইটে প্রযোজ্য না যেখানে প্রসঙ্গটি কোনও বিষয় নয়, কারণ এখানে কেবল একটি প্রসঙ্গ আছে।

flush_rewrite_rules()আমার মতে এটি সঠিক প্রসঙ্গটি ধরে নিয়েছে বলে মনে করা হয়েছে, তবে আমাদের ব্যবহারটি বিবেচনায় নেই switch_to_blogযার জন্য প্রসঙ্গটি পুরোপুরি পরিবর্তিত করে এবং যদি আমরা সম্ভাব্যভাবে নিয়মগুলি ফ্লাশ করার চেষ্টা করি তবে আমাদের বিপজ্জনক অঞ্চলে ফেলে দেয়।

অভ্যন্তরীণ flush_rewrite_rules()চেহারাগুলির মতো এটি:

function flush_rewrite_rules( $hard = true ) {
    global $wp_rewrite;
    $wp_rewrite->flush_rules( $hard );
}

কেন এটির মতো দেখাচ্ছে না এমন কোনও কারণ আমি ভাবতে পারি না:

function flush_rewrite_rules( $hard = true ) {
    global $wp_rewrite;
    $wp_rewrite->init(); //hello....
    $wp_rewrite->flush_rules( $hard );
}

... বিশেষত যখন আপনি বিবেচনা করেন যে WP_Rewriteনির্মাতা কী করে? এটি এটি করে ...

public function __construct() {
    $this->init();
}

যদিও এই লাইনটি আরও বাড়ানোর জন্য আপনার উদ্বেগের প্রথম বিন্দুকে স্পর্শ করা,

সুতরাং প্লাগইনটি মাল্টিসাইটে পুনর্লিখনের নিয়মগুলি কীভাবে নির্ভরযোগ্যভাবে চালিত হবে :

  • নতুন সাইটটি কখন তৈরি হবে?

আসুন দেখে নেওয়া যাক এই প্রক্রিয়া চলাকালীন ওয়ার্ডপ্রেস কোর কী উল্লেখ করবে:

  • প্রথম wpmu_create_blog()
  • যা তারপরে কল আসে install_blog()যা কলpopulate_options()
  • তারপরে populate_options()অপশন সারণীতে ডিফল্ট পারমলিংক কাঠামো সেট করে
  • পরে install_blog()দৌড়ে গেছে, wp_install_defaults()তারপরে ডাকা হবে
  • তারপরে wp_install_defaults()অবশেষে বর্তমান ব্লগে আবার স্যুইচ করার আগে নতুন তৈরি সাইটের জন্য পুনর্লিখনের নিয়মগুলিকে ফ্লাশ করে restore_current_blog()

গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল wp_install_defaults()আমি উপরের পরামর্শ মতো ঠিক নিয়মকে ফ্লাশ করে:

$wp_rewrite->init();
$wp_rewrite->flush_rules();

... কারণ permalink_structureবর্তমান প্রসঙ্গে সঠিক এবং নিয়মগুলি নির্মিত তা নিশ্চিত হওয়ার একমাত্র উপায় ।

গিথুব ইস্যুতে প্রমাণিত সমস্যাটিতেও ব্যবহারকারী নিম্নলিখিত আচরণগুলির কারণ:

যখন কোনও নতুন সাইট তৈরি করা হয় কেবলমাত্র শীর্ষ স্তরের সাইটে পোস্ট স্তরের পারমিলিংকগুলি ভেঙে দেয় - বেশিরভাগ পারমলিংক কনফিগারেশনগুলিতে তবে সমস্ত নয়:

এই 2 ফর্ম্যাটগুলি সঠিকভাবে কাজ করে।

ডিফল্ট - প্রত্যাশার মতো কাজ করে

দিন ও নাম - প্রত্যাশার মতো কাজ করে

... কারণ যদি প্রাথমিক ব্লগে ডে ও নাম পারমালিঙ্ক কাঠামো থাকে /%year%/%monthnum%/%day%/%postname%/, যখন একটি নতুন সাইট তৈরি করা হয়, তখন এটিতেও /%year%/%monthnum%/%day%/%postname%/ডিফল্ট অনুসারে একটি দিন ও নাম পারমালিঙ্ক কাঠামো থাকে যার কারণে যখন ইওস্ট এসইও প্লাগইন পুনরায় লেখার জন্য কোনও উল্লেখযোগ্য সমস্যা দেখা দেয় না shutdownহুক উপর নিয়ম ।


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

অনুগ্রহপূর্ব সময় শেষ, সুতরাং এখানে তরোয়াল পড়ার জন্য পয়েন্ট। :) এখনও অনেক কিছু বের করার জন্য। :(
প্রথম

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