আমার একটি ফাংশন রয়েছে যা একটি পোস্টের প্রকারে একটি কাস্টম ক্ষেত্রকে সংজ্ঞায়িত করে। ক্ষেত্রটি "সাবহেড" বলুন।
পোস্টটি যখন সংরক্ষণ করা হয়, আমি ইনপুটটিতে কিছু বৈধতা করতে চাই এবং প্রয়োজনে পোস্ট সম্পাদনা পর্দায় একটি ত্রুটি বার্তা প্রদর্শন করি। কিছুটা এইরকম:
// Handle post updating
function wpse_update_post_custom_values($post_id, $post) {
// Do some checking...
if($_POST['subhead'] != 'value i expect') {
// Add an error here
$errors->add('oops', 'There was an error.');
}
return $errors;
}
add_action('save_post','wpse_update_post_custom_values',1,2);
আমি এটি save_post ক্রিয়ায় আটকানোর চেষ্টা করছি, তবে কীভাবে ত্রুটিগুলি পরিচালনা করব তা আমি বুঝতে পারি না। ফাংশনটিতে কোনও ত্রুটিযুক্ত বস্তু পাস হয়েছে বলে মনে হচ্ছে না, এবং যদি আমি আমার নিজের ডাব্লুপি_আররর আপত্তি তৈরি করি এবং এটি ফিরিয়ে দিই তবে পোস্ট সম্পাদনা পৃষ্ঠায় যে কোনও প্রক্রিয়া ত্রুটি ছুঁড়েছে তার দ্বারা এটি সম্মানিত নয়।
আমার বর্তমানে আমার কাস্টম মেটা বাক্সের ভিতরে অন-পৃষ্ঠার ত্রুটি বার্তা রয়েছে তবে এটি আদর্শের চেয়ে কম নয় - আমার পরিবর্তে ডাব্লুপি'র মতো একটি বড়, লাল, উপরে-শীর্ষে ত্রুটি থাকে normal
কোন ধারনা?
হালনাগাদ:
@ ডেনিসের উত্তরের ভিত্তিতে আমি কয়েকটি ভিন্ন জিনিস চেষ্টা করেছি। গ্লোবাল হিসাবে ত্রুটিগুলি সংরক্ষণ করে এটি কাজ করে না, কারণ ওয়ার্ডপ্রেস সেভ_পোস্ট প্রক্রিয়া চলাকালীন পুনর্নির্দেশ করে যা আপনি এটি প্রদর্শনের আগে বিশ্বব্যাপী হত্যা করে।
আমি তাদের একটি মেটা মাঠে সংরক্ষণ করে শেষ করেছি। এর সাথে সমস্যাটি হ'ল আপনাকে এগুলি পরিষ্কার করতে হবে, অথবা আপনি অন্য পৃষ্ঠায় নেভিগেট করার সময় সেগুলি চলে যাবে না, তাই আমাকে অ্যাডমিন_ফুটারের সাথে যুক্ত অন্য একটি ফাংশন যুক্ত করতে হয়েছিল যা কেবল ত্রুটিগুলি পরিষ্কার করে দেয়।
আমি এতটা সাধারণ (পোস্ট আপডেট করা) এমন কিছু করার জন্য ত্রুটিটি পরিচালনা করার বিষয়টি আশা করি না। আমি কি স্পষ্ট কিছু অনুপস্থিত বা এটি সেরা পদ্ধতির?
// Handle post updating
function wpse_5102_update_post_custom_values($post_id, $post) {
// To keep the errors in
$errors = false;
// Do some validation...
if($_POST['subhead'] != 'value i expect') {
// Add an error here
$errors .= 'whoops...there was an error.';
}
update_option('my_admin_errors', $errors);
return;
}
add_action('save_post','wpse_5102_update_post_custom_values',1,2);
// Display any errors
function wpse_5102_admin_notice_handler() {
$errors = get_option('my_admin_errors');
if($errors) {
echo '<div class="error"><p>' . $errors . '</p></div>';
}
}
add_action( 'admin_notices', 'wpse_5102_admin_notice_handler' );
// Clear any errors
function wpse_5102__clear_errors() {
update_option('my_admin_errors', false);
}
add_action( 'admin_footer', 'wpse_5102_clear_errors' );
update_option('my_admin_errors', false);
যদি বিবৃতিটি শেষে দেওয়া থাকে তবে এটি চালানো কি আরও কার্যকর হবে wpse_5102_admin_notice_handler()
?
admin_footer
যদি আপনার বিজ্ঞপ্তি হ্যান্ডলারের ফাংশন শেষে ত্রুটিগুলি পরিষ্কার করেন তবে আপনি হুক থেকে মুক্তি পেতে পারেন । জিনিসকে কিছুটা সরল করে।