私はwordpressで製品を作成しています、そしてここで私はwpインストールの間にカスタムテーマとプラグインをインストールしています。
ここまで問題ありません。しかし、管理者はインストールの終了時にログインを促すことなく自動的にログインしたいと思っているページにリダイレクトしたいと考えています。
何か手助け?
私はwp-admin/install.phpのwp_install()の後にこのコードを入れようとしました
$creds = array();
$creds['user_login'] = $_POST['user_name'];
$creds['user_password'] = $_POST['admin_password'];
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) )
echo $user->get_error_message();
wp_redirect(home_url('products'));exit;
あなたが抱えている問題は、コアファイルを編集しているという問題とは別に、早すぎるフックで接続していることなので、wp-admin/install.php
を見てみましょう。
まったくフックはありませんが、すべてが正しくレンダリングされたときのページの最後には、wp_print_scripts( 'user-profile' )
が必要です。そして喜んでそこに私達は多くのフックを見つけるでしょう。その上に直接その関数の中に置かれていて、関数自身の名にちなんで名付けられたもの:wp_print_scripts
。そして他のWP_Scripts
の中。
それでは、これを小さなカスタムプラグインで試してみてください(未テスト)。
<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#129229) Auto-Login User after install */
add_action( 'wp_print_scripts', 'wpse129229LoginAfterInstall' );
function wpse129229LoginAfterInstall()
{
$user = wp_signon( array(
'remember' => true,
'user_login' => $_POST['user_name'],
'user_password' => $_POST['admin_password'],
), false );
if ( is_wp_error( $user ) )
echo $user->get_error_message();
exit( wp_redirect( home_url( "products" ) ) );
}
admin_password
が正しいform
フィールドid
/name
であるかどうかわかりません。通常/ IIRC WPはuser_password
を使用します。次に、ユーザーはhome_url( "products" )
でログインできません。そのためにはadmin_url()
を使う必要があります。
最後の注意:絶対にコアファイルを編集しないでください。アップグレード中にすべての変更が失われます。インストールする(アップグレードしない)ことだけが目的であれば(WP forkを維持したい場合は)何らかの方法で有効ですが、アップグレードしたい場合はそうではありません。
まず、コアファイルを編集するのではなく、次の点に注意してください。
wp-admin/install.php
の右上にwp-admin/includes/upgrade.php
ファイルが含まれています。wp-content/install.php
ファイルをチェックし、もしあればそれを含みます。そのため、あなたのカスタムinstall.phpファイルはインストールプロセスに含まれます。これは重要です。wp_install()
関数はif ( !function_exists() )
型のチェックでラップされています。 wp_install()
関数自体が「プラグイン可能」であることを意味します。言い換えれば、あなたがwp-content/install.php
であなた自身のwp_install()
関数を定義するならば、あなたのものは代わりに使われます、あなたはコアを編集することなくあなたが好きなすべての機能をカスタマイズすることができます。
そのため、ステップ1:既存のwp_install()
関数をそのままwp-content/install.php
ファイルにコピーします。コアコードを編集する代わりに、この機能を変更します。
ステップ2に関しては、結果として生じるユーザを自動ログインし、リダイレクトしたいと思います。幸いなことに、あなたがしなければならないのは、クッキーを設定してからリダイレクトして終了することだけです。簡単にできます。関数の最後にあるreturn array
ビットの代わりに、もっと次のようにします。
wp_set_auth_cookie($user_id, true);
wp_safe_redirect(home_url('products'));
exit;
注:未テスト。まだ試していません。しかし、それはうまくいくはずです。エラー処理などを追加する必要があるかもしれません。