ユーザーが自分のブログを作成するときに選択できるブログ名を制限する必要があります。
すべてのブログがドメイン名を共有するように設定されたWordPressネットワークがあります。例:domain.name.com/x、domain.name.com/yなど.
Active Directory統合プラグインを使用して、WordPressネットワークを社内のActive Directoryと統合しました。そのプラグインは、ユーザーのmailnickname属性(@
の前のEメールアドレスの一部)をニックネームフィールドに入れます。
ユーザーが自分のブログを自分で作成できるようにしたいが、ブログの名前をWordPressアカウントのニックネームフィールドと一致するように制限したい。たとえば、ニックネームjdoeのユーザーは、domain.name.com/jdoeという名前のブログしか作成できませんでした。
理想的には、/ wp-signup.phpでは、blognameフィールドが表示されない場合に最適です。
PHPをカスタマイズせずにこれを実行する方法はありますか?私はプラグインがすでに存在することを望んでいましたが、私はそれを見つけることができません。
wp-signup.php
のソースを見ると、signup_blog_init
をフィルタリングすることが最善の策であるように見えます(v。3.5.1の303行目)。
/*
add_filter( 'signup_blog_init', 'wpse103022_blog_name' );
function wpse103022_blog_name( $blog_details ) {
// Set $username to the user's username
$blog_details['blogname'] = $username;
return $blog_details;
}
*/
// see code below for replacement
これがうまくいくかどうかは100%確信できませんが、試してみる価値があります。
OK、下のコメントの後、私はvalidate_blog_signup()
を見ました。 wpmu_validate_blog_signup()
を呼び出し、がフィルタを提供します - wpmu_validate_blog_signup
。 コード を見ると、次のようなものがうまくいくはずです。
add_filter( 'wpmu_validate_blog_signup', 'wpse103039_blog_name' );
function wpse103039_blog_name( $blog_details ) {
$blog_details['path'] = '/' . $desired_blogname; // however you get it
return $blog_details;
}
コードを正しく読んでいれば、次のようにフィルタ処理できます。
domain
path
blogname
blog_title
user
errors