আমি আমার কাস্টম পোস্ট টাইপ প্রশাসকের সাথে যুক্ত প্রতিটি মেটা বাক্সের জন্য কি আমার নোস ফিল্ডের দরকার?


16

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

কোন চিন্তা? ধন্যবাদ।

উত্তর:


13

আমি তাই সুপারিশ করব।

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

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


সম্পাদন করা

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

save_post_call_back($post_id){

  //Check this is not an auto-save route

  if(nonce of metabox1 present and valid){
     //Process data from metabox1
  }else{
    //Either metabox removed - or invalid nonce. Take no action.
  }

  if(nonce of metabox2 present and valid){
     //Process data from metabox2
  }else{
    //Either metabox removed - or invalid nonce. Take no action.
  }

}

নাম আপাতত মাঠের metabox অনন্য হওয়া উচিত (এবং অন্য কোন nonces যে অন্যান্য প্ল্যাগ-ইনগুলি থেকে ফর্ম উপস্থিত সঙ্গে সংঘর্ষ নয়)।

ননস মানটি ক্রিয়াটির জন্য স্বতন্ত্র হওয়া উচিত (এবং এটিতে সাধারণত ডেটার উত্স অন্তর্ভুক্ত হওয়া উচিত (উদাহরণস্বরূপ দ্রুত সম্পাদনার বিরোধী হিসাবে সম্পাদনা-পোস্ট))। আমি সাধারণত পোস্ট আইডিও অন্তর্ভুক্ত করি।


হুম। তবে <form>প্রশাসক পৃষ্ঠায় কেবল একটি ট্যাগ রয়েছে। ননস ফিল্ডটি কি ফর্মের সাথে অনন্য হওয়া উচিত? টিআই, @ স্টেফেন
আনা বান

হ্যাঁ, সুতরাং ননসের নামটি মেটাবক্সের সাথে স্বতন্ত্র হওয়া উচিত যাতে আপনি এটি প্রতিটি মেটাবক্সের জন্য পরীক্ষা করতে পারেন। ননস মানটি সম্পাদিত ক্রিয়া এবং উপাত্তের উত্সের জন্য অনন্য হওয়া উচিত (যেমন 'দ্রুত সম্পাদনা' এবং সাধারণ সম্পাদনা পর্দা উভয়ই save_postক্রিয়াকে ট্রিগার করে )।
স্টিফেন হ্যারিস

আমি যা বলছি তা স্পষ্ট করে হালনাগাদ উত্তর :)
স্টিফেন হ্যারিস

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

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

5

আপনি জমা বাক্সটিও ঝুঁকতে পারেন যা এর সাথে নন ফিল্ড যুক্ত করে কখনই ছত্রভঙ্গ হয় না

add_action( 'post_submitbox_start', 'theme_submitdiv_extra' );
function theme_submitdiv_extra()
{
  wp_nonce_field( 'theme_meta_box_nonce', 'meta_box_nonce' );
}

তারপরে, আপনার সেভ_পোস্ট ক্রিয়ায়:

if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'theme_meta_box_nonce' ) ) return;

1

ননস ফিল্ডটি যাচাই করতে ব্যবহৃত হয় যে ফর্মের বিষয়বস্তু অন্য কোথাও নয় বর্তমান সাইটের অবস্থান থেকে এসেছে।

কোডেক্স: wp_nonce_field

ফর্ম প্রতি শুধুমাত্র একটি ননস ফিল্ড প্রয়োজন, এটি আমার জন্য বুদ্ধিমান হিসাবে বেশি ব্যবহার করুন।

আপনার অনুরোধটি কোনও প্রশাসক পৃষ্ঠা থেকে এসেছে তা নিশ্চিত করতে আপনি তদন্ত করতে পারেন এবং চেক_ডমিন_রেফার () ব্যবহার করতে পারেন


-1

ডাব্লুপি ৩.৩.২-তে সম্পূর্ণ সম্পাদনা পৃষ্ঠাটি একটি ফর্ম-ট্যাগে আবৃত থাকে যাতে আপনার নিজের ফর্ম-ট্যাগগুলি যুক্ত করা উচিত নয় !! এখনও যদি তা করে থাকেন এবং অন্য একটি পৃথক কাস্টম মেটা বক্স যুক্ত করার চেষ্টা করেন এটি সংরক্ষণের সময় ব্যর্থ হয়ে যায় এবং সংরক্ষণের চেষ্টা করার সময় কেবল আপনাকে ডাব্লুপি-অ্যাডমিন হোমের দিকে নিয়ে যায় !!

এছাড়াও NONCE ফিল্ডটি যুক্ত করবেন না কারণ ফর্ম প্রতি কেবল একটি হিসাবে অনুমিত হয় (এটি এটি ব্যর্থও করতে পারে!) এবং পৃষ্ঠা সম্পাদনাটিতে ইতিমধ্যে একটি ননস ফিল্ড রয়েছে!

সম্পাদনা:

জিনিসটি 1) যেহেতু পুরো সম্পাদনা স্ক্রিনের জন্য কেবলমাত্র একটি ফর্ম-ট্যাগ রয়েছে , কারণ সঠিক উত্তর লেখক স্বীকার করেছেন এবং 2) এটিতে স্বয়ংক্রিয়ভাবে এটিতে একটি অদ্ভুত যোগ হয়েছে। আপনি আরও যুক্ত করতে হবে কেন? এটি সবসময়ই বাজে কথা থাকবে তা যাই হোক না কেন ...

অভিপ্রায় আমার দৃষ্টিতে সম্পাদনায় যান বিষয়বস্তু বা মেটা তথ্য দ্বারা পাতা যেমন। একটি ননস ফিল্ড ... এছাড়াও যখন আমি আরও যুক্ত করার চেষ্টা করেছি তখন এটি একাধিক মেটা-বাক্সের সাথেও কাজ করে না !! একটি কাজ করবে এবং অন্যটি ব্যর্থ হবে এবং কেবল ব্যবহারকারীকে ডাব্লুপি-অ্যাডমিন হোম-এ পুনর্নির্দেশ করবে!


আপনি দুটি প্রশ্নের একই উত্তর পোস্ট করেছেন, এটি কি দুর্ঘটনাজনক ছিল? আপনি দু'জনের মধ্যে কোনটি উত্তর দেওয়ার অর্থ দিয়েছিলেন?
রাস্ট

দুর্ঘটনাক্রমে, এই এক। আপনি যদি মেটা বক্সের ফায়ারব্যাগ বা ক্রোম ভিউ উপাদানটি ডাব্লুপি ৩. 3.-তে একটি ফর্ম-ট্যাগের সাথে যুক্ত করেন তবে এটি পোস্টের জন্য পুরো ফর্মের মধ্যে একটি মোড়ানো স্বয়ংক্রিয়ভাবে সরিয়ে ফেলবে। তাহলে এটি কীভাবে ভুল? আপনি কেন তখন বেশ কয়েকটি বাজে ক্ষেত্র যুক্ত করবেন?
ওজজিআইই

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