Quá trình đăng ký Multisite không phải là một điều dễ dàng để điều chỉnh. Nó có nhiều móc để chơi, không giống như các quy trình khác, nhưng dường như chúng không kết hợp quá tốt với các tùy chỉnh nặng nề, vì vậy tôi hiểu sự thất vọng của bạn.
Nếu tôi hiểu chính xác, sẽ không phức tạp để đạt được những gì bạn muốn, mặc dù đó không thể là giải pháp một bước mà không ghi đè nhiều hành vi mặc định của WordPress, chủ yếu là vì đăng ký (tức là khi người dùng của bạn sẽ gửi thông tin tùy chỉnh) và kích hoạt ( tức là khi blog mới thực sự sẽ được tạo ra) xảy ra riêng biệt.
Đây là một mã rất thô mà bạn sẽ cần để bắt đầu. Hy vọng rằng nó sẽ giúp bạn đi đúng hướng:
// 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']);
}
Ghi nhớ:
- Nếu bạn muốn lọc đầu vào thông qua plugin, tôi thực sự khuyên bạn nên sử dụng đầu vào được chọn để khóa các tùy chọn được cung cấp;
- Vì một số trường được yêu cầu và thông qua xác thực trong quá trình đăng ký (ký tự tối thiểu, ký tự không được phép cho tên trang web, tên trong danh sách đen, v.v.), tôi khuyên bạn nên kiểm tra trường bổ sung của bạn trên toàn cầu $ _REQUEST khi nhập giá trị của đầu vào vào đầu tiên chức năng, để người dùng không bị mất dữ liệu đầu vào của mình trong trường hợp anh ta gửi lại để sửa giá trị của các trường mặc định của WordPress;
- Rõ ràng bạn có thể thay thế ý tưởng của chức năng cuối cùng bằng bất cứ điều gì phù hợp nhất với trình cắm của bạn, nhưng giá trị của trường sẽ có sẵn từ bên trong chức năng cuối cùng đó, sẽ giúp bạn theo cách của mình.
Trên lưu ý cuối cùng, nếu bạn muốn xử lý tất cả các giá trị 'Extra_field' từ tất cả các blog hiện có sau này, tôi sẽ khuyên bạn nên lưu trữ thông tin trên một bảng; có thể sử dụng update_site_option
thay vì update_blog_option
trên chức năng cuối cùng đó, làm mất blog_id, không bắt buộc trong trường hợp đó.
Dù sao, hãy cho chúng tôi biết làm thế nào nó đi, và chúc may mắn!