멀티 사이트 가입 절차는 쉽게 조정할 수 없습니다. 다른 프로세스와 달리 많은 후크를 가지고 있지만 무거운 커스터마이징을 위해 너무 잘 어울리지 않는 것처럼 보이므로 좌절감을 이해합니다.
내가 올바르게 이해한다면 원하는 것을 달성하는 것이 그렇게 복잡하지는 않지만 주로 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를 잃어 버릴 수 있습니다.이 경우에는 필요하지 않습니다.
어쨌든, 어떻게되는지, 행운을 알려주십시오!