[解決済み] WordPressのfunctions.phpで新規ユーザーを自動作成する。
質問
コードを使って新しいユーザーを管理者権限で追加する必要があり、次のコードを見つけました。
add_action('init', 'add_user');
function add_user() {
$username = 'username123';
$password = 'pasword123';
$email = '[email protected]';
// Create the new user
$user_id = wp_create_user( $username, $password, $email );
// Get current user object
$user = get_user_by( 'id', $user_id );
// Remove role
$user->remove_role( 'subscriber' );
// Add role
$user->add_role( 'administrator' );
}
で追加したところ
functions.php
私はこのエラーを得た。
Fatal error: Call to a member function remove_role()
on a non-object in ..../functions.php on line ...
こんなコードも試してみました。
function fb_wp_insert_user() {
$user_data = array(
'ID' => '',
'user_pass' => wp_generate_password(),
'user_login' => 'dummy',
'user_nicename' => 'Dummy',
'user_url' => '',
'user_email' => '[email protected]',
'display_name' => 'Dummy',
'nickname' => 'dummy',
'first_name' => 'Dummy',
'user_registered' => '2010-05-15 05:55:55',
'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'fb_wp_insert_user' );
デフォルトのロールを
adminstrator
しかし、ユーザーをブラウズすると、このユーザーは何の役割も持っていないことがわかりました。
どうすればいいですか?
これはあなたのエラーです
<ブロッククオート致命的なエラーです。非オブジェクトのメンバー関数 remove_role() の呼び出し in .../functions.php on line ...
それは
$user->remove_role( 'subscriber' );
というコードがあり、以下のコードで新しいユーザーを取得する場合、このような意味になります。
$user = get_user_by( 'id', $user_id );
を返しているわけではありません。
WP_User
オブジェクトを作成します。つまり、オブジェクトでないメソッドを呼び出すと、このエラーが表示され、それはあなたが
ID
を使用したとき
$user_id = wp_create_user( $username, $password, $email );
ユーザーの作成に成功していない可能性があり、この場合、戻り値は
object
によると
Codex
成功した場合 - この関数は、作成されたユーザーIDを返します。 を使用します。失敗した場合 (ユーザ名またはメールアドレスが既に存在する場合) は 関数はエラーオブジェクトを返し、これらの可能な値と メッセージを表示します。
empty_user_login, ログイン名が空白のユーザーを作成できません。
existing_user_login, このユーザー名はすでに登録されています。
existing_user_email, このメールアドレスはすでに登録されています。
そのため、ユーザーを作成する際には、まずそのユーザーが存在するかどうかを次のようにチェックします。
add_action('init', 'add_my_user');
function add_my_user() {
$username = 'username123';
$email = '[email protected]';
$password = 'pasword123';
$user_id = username_exists( $username );
if ( !$user_id && email_exists($email) == false ) {
$user_id = wp_create_user( $username, $password, $email );
if( !is_wp_error($user_id) ) {
$user = get_user_by( 'id', $user_id );
$user->set_role( 'administrator' );
}
}
}
また、ロールの再作成と追加も不要です。
set_role($role)を設定します。
は、そのユーザーの以前のロールを削除し、新しいロールを割り当てます。
詳しくはこちら
wp create user
と
でユーザーを取得する
について
Codex
. また
wp_generate_password()
を使用すると、プレーンテキストではなく、セキュリティで保護されたパスワードを使用することができます。
更新情報
追加ユーザー
はWordPressの関数なので、以下のように名前を変えてください。
add_my_user
.
関連
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】空の配列要素を削除する
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】In_arrayが動作しない。
-
[解決済み] PHPに各ユーザーのサブドメインを自動的に作成させるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】空の配列要素を削除する
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み】mysqli::query(): mysqli をフェッチできない