output started at /functions.php:1
というエラーメッセージがとても怪しい気がするのですが、
get_currentuserinfo()やwp_get_current_user()をコメントアウトするとエラーは消えるでしょうか。
消えない場合、functions.phpに文法エラーがないかご確認いただけますでしょうか。
munyaguさん回答ありがとうございます。
また返信が遅れまして申し訳ありません。
get_currentuserinfo()
wp_get_current_user()
をコメントアウトで一応エラーは消えます。
文法エラーのところから探っていますが
atomのphp-lint等でもエラーは吐き出されず調査中です。
文法エラーの可能性も高い気もしますので
改めてコードを見てみます。
※すみません下記のエラーは正確にはこのような形でした。
output started at /functions.php:830
検索してみたところget_currentuserinfo()は4.5.2から非推奨になり
wp_get_current_user()に変更することを推奨されているということでしたが
wp_get_current_user()は内部的にget_currentuserinfo()を使っているという記事があったり
wp_get_current_user()でも同じエラーがでており解決方法が見つけられず
この場をお借りしている状況です。
wp_get_current_user() が内部的に呼んでいるのは、_wp_get_current_user() になります。
Code Reference wp_get_current_user ()
エラーの内容からすると、option.php の823, 824 行目は、ユーザー設定用のcookie を設定する前に、ヘッダーが出力済みであるというエラーとなっています。
1. 上記の2つのエラーメッセージの前にも、なんらかのエラー出力がありますでしょうか。
2. どこにどのように、wp_get_current_user() を記述しているのか、記述されている関数まるごと提示いただけると、原因の特定がしやすくなります。
jim912さんご回答ありがとうございます。
また返信が遅くなりまして申し訳ありません。
>wp_get_current_user() が内部的に呼んでいるのは、_wp_get_current_user() になります。
そうなんですね!勉強になりました。リンクを参考にさせていただきます。
1.エラーは特にない状態です。
デバックモードをtrueにしてもみましたが特に検出されませんでした。
2.は以下のようにしております。
$current_user = wp_get_current_user();
$user_name = $current_user->user_login;
if($user_name == "テストユーザー") {
echo 'イフ判別成功';
add_action('admin_menu', 'adminCustomize');
}
function adminCustomize() {
remove_menu_page('upload.php'); // メディア
remove_menu_page('link-manager.php'); // リンク
remove_menu_page('edit.php?post_type=page'); // 固定ページ
remove_menu_page('edit-comments.php'); // コメント
remove_menu_page('themes.php'); // 概観
remove_menu_page('plugins.php'); // プラグイン
remove_menu_page('users.php'); // ユーザー
remove_menu_page('tools.php'); // ツール
remove_menu_page('options-general.php'); // 設定
remove_menu_page('profile.php');//プロフィール
}
functions.phpにこれ以外のソースは記述せずにテストしてみましたがエラーが出てしまいました。
ご教示いただきましたcookieのところで以下の動きがありました。
一度ログインして以下の2行をコメントアウトします。
//$current_user = wp_get_current_user();
//$user_name = $current_user->user_login;
するとエラーは消えてメニュー(メディア、リンクなど)が表示されます。
そのままクッキーを消さずに上記2行のコメントアウトを消去すると
エラーが出ないままメニューのところがremoveされます。
また余談ですがwordpressのバージョンが最新の4.5.3なのですが(wp-includes/version.phpにて確認)4.5.3へのアップデートの案内が表示されリンクも押せる状態になっています。
ですので一度wpの再インストールをしてみようと考えています。
結果が出ましたらこちらにまた書き込みをさせていただきます。
WordPressを新規インストールし、functions.php の末尾に上記コードを入れ、
ユーザーのみ「テストユーザー」 –> 自分のユーザー名に変更したら、正しくメニューが消えましたよ。
特にPHPエラーは出ていないようです。
なので
1. そのコードをいれる場所を変える(末尾とか)
2. 他のブラウザで試してみる
3. ブラウザの Cookieとキャッシュをクリアをしてから試す
などまだやりようはあるかなと思います。
kimipoohさんコメントありがとうございます。
また検証が遅れまして申し訳ございませんでした。
1.2.3は検証してみましたが結果は同じでした。
その後再度インストールを実施して4.5.3になったところ
エラーが発動する箇所が変わりました。
echo ‘イフ判別成功’;
/wp-includes/option.php on line 823
/wp-includes/option.php on line 824
このechoの1行をコメントアウトすると
上記エラーが出なくなりました。
目的としてユーザーごとにメニューなどの項目を
非表示にしたいということで上記コードを書いており、
横着をしてcssを直接書いていた部分があったので
なるべくPHPに置き換えましたが
画面上部プルダウンの表示オプションの部分と
ヘルプの部分を非表示にするのに
cssを使わない方法が見つけられませんでした。
本来echoでcssを書いたりするのは良くないのでしょうか。
恐縮ですがphpで書く方法などもしお心当たりがありましたら
よろしくお願いいたします。
http://mypacecreator.net/blog/archives/1041
あと、cookieの仕組みについて良く理解しておくべきです。
setcookie
setcookie() は、その他のヘッダ情報と共に 送信するクッキーを定義します。 ほかのヘッダ情報と同様に、 クッキーは、スクリプトによる他のあらゆる出力よりも前に 送信される必要があります(これはHTTPプロトコルの制約です)。 <html> や <head> タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
jim912さん、度々のご回答ありがとうございます!
おっしゃる通りcookieやwordpressの実行過程が理解できておらず
現在書籍などを読んでいるのですがまだまだ分かっておりません。
何度かphpのみでアプリケーションを作る必要がありそうですorz
add_action('admin_print_styles', 'admin_css_custom');
function admin_css_custom() {
echo '<style>#hogehoge {display: none;}</style>';
}
ご提示いただきましたページのソースを参考に
admin_print_stylesフックを適用したところすんなり動きました。
最初のエラー発生個所は色々いじっているうちに深みにはまり
誤った認識だったと思いますので改めて訂正させていただきます。
↓この質問は間違い。当方の勘違いです。
wordpress4.5.2でuser関連の変数や関数で以下のエラーが出ます。
get_currentuserinfo()
wp_get_current_user()
current_user_can()
検証するまでに時間がかかってしまい申し訳ありませんでした。
またお付き合いいただきました皆様ありがとうございました。
おかげさまで色々と勉強になりました。
これにて解決とさせていただきます。