1. ホーム
  2. wordpress

[解決済み] ワードプレスのwp_signon関数が動作しない

2022-02-19 18:37:23

質問

wp_signon()関数を使って、ユーザーにログインしています。私は次のように行っています。

$creds = array();

$creds['user_login'] = $username;

$creds['user_password'] = $password;

$creds['remember'] = true;

$user = wp_signon( $creds, false );

ログイン後、ユーザーをトップページに送りたい。

しかし、私は次のようなエラーに直面しています。

警告 Cannot modify header information - headers already sent by (output started at E:\xampphtdocs wpmoodle wp-content templates templates twentyteneeheader.php:12) in E:\xampphtdocs wpmoodle wp-includes templatespluggable.php on line 690.

よろしくお願いします。

どのように解決するのですか?

wp_signon() は、実際のページをブラウザに送信する前に実行する必要があります。

これは wp_signon() は、認証クッキーを設定するためのものです。これは "Set-Cookie: ..." ヘッダを出力することによって行われます。 pluggable.php この行がクッキーを設定しているのがわかると思います。

ということは wp_signon() 出力 ヘッダー を送信していないのであれば、すでに コンテンツ -- ヘッダは常にコンテンツの前に出力されなければならないからです。

しかし、このエラーは、あなたがすでに何らかの出力を送信したことを示しています -- 12行目の header.php WordPressの標準テーマの最初のHTMLの一部と思われます。

これは基本的に wp_signon() の呼び出しを WordPress の処理の早い段階で行うことで、ページのコンテンツが送信される前にヘッダーを出力する機会を得ることができます。