WPMU で新しいブログを作成するために使用したい PHP スクリプトがあります。wpmu_create_userやwpmu_create_blogなどの WordPress 関数の呼び出しに問題があります。
このスクリプトをコマンド ラインからcronジョブとして実行し、外部データベースから新しいブログ作成リクエストを受け取り、WordPress 機能を使用して新しいブログを作成し、新しいブログ情報でデータベースを更新することを願っています。
WPMU で新しいブログを作成するために使用したい PHP スクリプトがあります。wpmu_create_userやwpmu_create_blogなどの WordPress 関数の呼び出しに問題があります。
このスクリプトをコマンド ラインからcronジョブとして実行し、外部データベースから新しいブログ作成リクエストを受け取り、WordPress 機能を使用して新しいブログを作成し、新しいブログ情報でデータベースを更新することを願っています。
次のように、phpスクリプトファイルにwp-load.phpファイルを(WordPressインストールのルートに)含めます。
require_once("/path/to/wordpress/wp-load.php");
wp-load ファイルの abspath を指定する必要があります。これで、php スクリプトで wordpress のすべての機能を使用できるようになります。
私はフォルダー内の任意の PHP ファイルで機能するユニバーサル ソリューションを持っています。wp-content
'path/to/wordpress'
require_once(explode("wp-content", __FILE__)[0] . "wp-load.php");
自動的に WordPress のルートに行き、wp-load.phpをロードします。
プラグインであろうとテーマファイルであろうと、どこにでも貼り付けるだけで機能します。
../../../..
テーマやプラグインのフォルダの構造を変更すると、非常に見栄えが悪く、夢中になる可能性があると思います。
注: この解決策は、フォルダーの名前を変更していないことを前提とwp-content
ます。
wordpress 3.1 の場合、wp-includes/ms-settings.php:100 が必要になるか死ぬため、ホスト/ドメインを指定する必要がありました。したがって、私のスクリプトは次のようになります (ネットワーク/マルチブログ サイトに使用していることに注意してください)。
#!/usr/bin/php -q
<?php
#for multi-blog only
$blog_id = 1;
#specify host or domain (needed for wp-includes/ms-settings.php:100)
$_SERVER[ 'HTTP_HOST' ] = 'localhost';
#location of wp-load.php so we have access to database and $wpdb object
$wp_load_loc = "/path/to/wordpress/wp-load.php";
require_once($wp_load_loc);
#for multi-blog only
switch_to_blog($blog_id);
#test to make sure we can access database
echo $wpdb->prefix;
?>
これはうまくいくはずです:
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
つまり、php スクリプトが同じサーバー上にあり、WP がルートにインストールされている場合です。ほとんどの場合がそうです。
以下は私が使用しているコードです:
<?PHP
require_once ('/path/to/wordpress/wp-load.php');
require_once ('/path/to/wordpress/wp-blog-header.php');
require_once ('/path/to/wordpress/wp-includes/registration.php');
do_action('wpmuadminedit', '');
//Code to Connect and Select the external database
//Code to Connect to the external DB and get the new order details:
NewBlogName=$name and AdminEmail=$email
if ( !email_exists($email) )
{
// email does exist, create a new user
$name = create_name_from_email($email);
$password = "use a default password";
$user_id=wpmu_create_user($name, $password, $email);
create_blog($email, $title, $user_id, $password);
}
else
{
// user exists, create new blog
$user_id=email_exists($email);
$password = "use existing wordpress password";
create_blog($email, $title, $user_id, $password);
}
function create_name_from_email ($email) {
preg_match('/[^@]+)@/',$email,$matches);
$name = $matches[1];
return $name;
}
//Creates a new blog, expects user to already exist.
function create_blog($email, $title, $user_id, $password)
{
//Code to Update external DB that the order is in process
$public = array("public" => 1);
if (constant('VHOST') == 'yes')
{
$newdomain = $domain . "." . $current_site->domain;
$path = $base;
}
else
{
$newdomain = $current_site->domain; $path = $base . $domain . '/';
}
$domain = strtolower($domain);
$newdomain = strtolower($newdomain);
$path = strtolower($path);
$meta = apply_filters('signup_create_blog_meta', array('lang_id' => 1, $public));
$meta = apply_filters("add_singup_meta", $meta);
wpmu_create_blog($newdomain, $path, $title, $user_id , $meta, $current_site->id);
do_action('wpmu_activate_blog', $blog_id, $user_id, $password, $title, $meta);
// Update external DB with BlogUrl, NewBlogName, AdminPassword,
OrderStatus=Complete.
mysql_close($con);
?>
require_once('../../../wp-load.php');
カスタム ファイルで wordpress 関数を使用する前に、この行を追加する必要があると思います。そして、ワードプレスのインストール構造に従って../を3回追加したことを確認してください。手動で構造をチェックすることに依存します。元。カスタム ファイルが themes/yourtheme/custom.php 内にある場合、上記のコードは完全に機能し、そうでない場合は、パスに従って ../ を追加するか、1 つ以上の ../ を削除します。
WordPress はphpass関数を使用します。
パスワードとテーブル内のハッシュ (移行された WordPress ユーザー) があり、ログインの詳細を確認する方法を見つける必要があったため、これはうまくいきました。
ここからダウンロードしてください - https://github.com/sunnysingh/phpass-starter
必要なのは、WordPress ハッシュに対するテキスト パスワードをチェックする次の基本的な関数だけです。
<?php
require_once("PasswordHash.php");
$hasher = new PasswordHash(8, false);
// Check that the password is correct
$check = $hasher->CheckPassword($password, $stored_hash);
if ($check) {
// Password good
} else {
// Password wrong
}
?>
Sunny Singhのすべてのクレジット!