กระบวนการลงทะเบียน Multisite ไม่ใช่เรื่องง่ายที่จะปรับแต่ง มันมีตะขอมากมายที่จะเล่นกับซึ่งแตกต่างจากกระบวนการอื่น ๆ แต่พวกเขาดูเหมือนจะไม่ได้มาพร้อมกันสำหรับการปรับแต่งอย่างหนักดังนั้นฉันจึงเข้าใจความคับข้องใจของคุณ
หากฉันเข้าใจอย่างถูกต้องมันไม่ซับซ้อนที่จะบรรลุสิ่งที่คุณต้องการแม้ว่ามันจะไม่สามารถแก้ปัญหาแบบขั้นตอนเดียวโดยไม่แทนที่พฤติกรรมเริ่มต้นของ WordPress ส่วนใหญ่เนื่องจากการสมัคร (เช่นเมื่อผู้ใช้ของคุณจะส่งข้อมูลที่กำหนดเอง) และการเปิดใช้งาน เช่นเมื่อบล็อกใหม่จะถูกสร้างขึ้นจริง) เกิดขึ้นแยกกัน
นี่คือรหัสคร่าวๆที่คุณจะต้องเริ่มต้น หวังว่ามันจะพาคุณไปในทิศทางที่ถูกต้อง:
// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
<label>An extra field</label>
<input type="text" name="extra_field" value="" />
<?php
}
// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
if(isset($_REQUEST['extra_field'])) {
$meta['extra_field'] = $_REQUEST['extra_field'];
}
return $meta;
}
// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}
โปรดทราบ:
- หากคุณต้องการกรองอินพุตผ่านปลั๊กอินฉันขอแนะนำอย่างยิ่งให้ใช้อินพุตที่เลือกเพื่อล็อคตัวเลือกที่มีให้
- เนื่องจากต้องมีบางฟิลด์และผ่านการตรวจสอบในระหว่างการลงทะเบียน (ตัวอักษรขั้นต่ำ, ตัวอักษรที่ไม่อนุญาตสำหรับชื่อไซต์, บัญชีดำ, ฯลฯ ) ฉันขอแนะนำให้ตรวจสอบฟิลด์เพิ่มเติมของคุณใน $ _REQUEST โกลบอลเมื่อใส่ค่าของอินพุต ฟังก์ชั่นเพื่อให้ผู้ใช้ไม่สูญเสียข้อมูลของเขาในกรณีที่เขาถูกส่งกลับไปแก้ไขค่าของเขตข้อมูลเริ่มต้นของ WordPress;
- คุณสามารถแทนที่ความคิดของฟังก์ชั่นสุดท้ายด้วยสิ่งที่เหมาะกับปลั๊กอินของคุณได้ดีที่สุด แต่ตอนนี้ค่าของฟิลด์จะพร้อมใช้งานจากภายในฟังก์ชั่นสุดท้ายซึ่งจะช่วยคุณได้
ในบันทึกสุดท้ายหากคุณต้องการประมวลผลค่า 'extra_field' ทั้งหมดจากบล็อกที่มีอยู่ทั้งหมดในภายหลังฉันขอแนะนำให้เก็บข้อมูลไว้ในตารางเดียว อาจจะใช้update_site_option
แทนupdate_blog_option
ฟังก์ชั่นสุดท้ายนั้นทำให้สูญเสีย blog_id ซึ่งไม่จำเป็นในกรณีนั้น
อย่างไรก็ตามแจ้งให้เราทราบว่ามันไปและโชคดี!