web-dev-qa-db-ja.com

プログラムでユーザーを作成するための最良の方法

スタンドアロンスクリプトを介してユーザーを作成したいです。ユーザーの追加画面からユーザーが作成されたときと同じ方法で、アクティベーションEメールを送信します。パスワードを作成するためのリンクが記載された電子メールが送信されます。メールにパスワードがありません。

新しいユーザーを作成するためのさまざまな機能があるようです。

またあります

  • wp-admin/user-new.php

以下は私が持っているコードです。新しいユーザーを作成しますが、通知メールではありません。 wp-mail()とphp mail()が正しく動作していることを確認しました。

これが正しい方向かどうかはわかりません。もっと簡単な方法があると思います。これが正しい方向である場合、なぜ通知が送信されないのかについての何らかの問題点はありますか

ありがとう。

<?php
define( 'SHORTINIT', true );
require_once( '/var/www/html/mysite/wp-load.php' );
require_once ('/var/www/html/mysite/wp-includes/user.php');
require_once ('/var/www/html/mysite/wp-includes/formatting.php');
require_once ('/var/www/html/mysite/wp-includes/capabilities.php');
require_once ('/var/www/html/mysite/wp-includes/pluggable.php');
require_once ('/var/www/html/mysite/wp-includes/kses.php');
require_once ('/var/www/html/mysite/wp-includes/meta.php');
function __() {}
wp_create_user ( 'testuser8', 'apsswd', '[email protected]' );
wp_new_user_notification ( testuser8,null,'both' );
?>
2
user3185563

コーデックスページをwp_create_user に読み替えてください。

あなたはあなたのコードが実行されるコンテキストを説明しません。あなたはそれらすべてのrequire_once呼び出しを必要とするべきではありません。

とにかく、この行でwp_new_user_notification ( testuser8,null,'both' );testuser8は何ですか?これは変数ではなく、文字列でもありません。おそらくエラーをスローするのは単なるテキストです。

試してください:

$user_id = wp_create_user ( 'testuser8', 'apsswd', '[email protected]' );
if( is_wp_error( $user_id ) ) 
    var_dump( $user_id );
else
    wp_new_user_notification ( $user_id, null,'both' );
4
shanebp

WP-CLIの User Create を使用してスクリプトを作成します。

wp user create - ユーザーを作成します.

$ wp user create testuser8 [email protected] --user_pass=apsswd--role=author --send-email
Success: Created user 3.
2
jgraup