テーマは自作したものになります(バージョンアップ前までは問題なく表示・動作しておりました)
テーマフォルダに入れていたフリー配布のPHPが問題だったのかと思い、PHP8.xで使用可能なものに差し替えてみたのですが、エラー自体は変わらない状況です。
functions.phpにwp_enqueue_script()を直に書くとこのエラーが発生するようです。
function hoge(){
wp_enqueue_script();
}
add_action( 'wp_enqueue_scripts' , 'hoge' );
のようにフックを追加すると解消されるようですが、試されましたか?
アドバイスありがとうございます。
おそらく問題の箇所はこちらだと思うのですが、wp_enqueue_script とadd_action を並列に書いているのがよろしくない、という理解で合ってますでしょうか⋯?
function wp_auth_check_load() {
if ( ! is_admin() && ! is_user_logged_in() ) {
return;
}
(省略)
if ( apply_filters( 'wp_auth_check_load', $show, $screen ) ) {
wp_enqueue_style( 'wp-auth-check' );
wp_enqueue_script( 'wp-auth-check' );
add_action( 'admin_print_footer_scripts', 'wp_auth_check_html', 5 );
add_action( 'wp_print_footer_scripts', 'wp_auth_check_html', 5 );
}
}
こんにちは。
Notice: 関数 wp_enqueue_script が誤って呼び出されました。スクリプトおよびスタイルは wp_enqueue_scripts、admin_enqueue_scripts、login_enqueue_scripts フック以降のみに登録・キュー追加できます。
ここに原因そのものが書かれていると思います。
自作のテーマとのことですが、そのテーマディレクトリ内で wp_enqueue_script() を実行している箇所はありませんか? そのコードが適切なフックして実行されているかを調べるとよいと思います。
そもそもフックの概念がわからないという場合は、テーマディレクトリ内で wp_enqueue_script() が書かれている箇所前後のコードをここに貼っていただくと、原因が調査しやすいかもしれません。
@abell13
並列に書いているのがよろしくないわけではなく、
wp_enqueue_script( 'wp-auth-check' );
がフックに登録されていないのが問題だと思われます。どれに登録したいのか分かりませんが、例えば
add_action( 'wp_enqueue_scripts' , function(){ wp_enqueue_script( 'wp-auth-check' ); } );
のようにすれば解消されるのではないでしょうか。
コメント、アドバイスありがとうございます。
最初にテーマディレクトリの中でwp_enqueue_script を使っている箇所を調べてみましたが、ありませんでした。
エラーで指摘されているディレクトリが「wp-includes」でしたので、直下の「functions.php」をみていましたが、他でもエラーが起きているということでしょうか⋯?
add_action( 'wp_enqueue_scripts' , function(){ wp_enqueue_script( 'wp-auth-check' ); } );
上記を追加するというのもやってみたのですが、書く場所が違うのかエラー解消に至りませんでした⋯。
長くなってしまい恐縮ですが、エラーが出ている箇所のfunction文をそのまま記載いたしますので、引き続きアドバイスいただけますと幸いです。
お手間おかけして申し訳ございません。。
function wp_auth_check_load() {
if ( ! is_admin() && ! is_user_logged_in() ) {
return;
}
if ( defined( 'IFRAME_REQUEST' ) ) {
return;
}
$screen = get_current_screen();
$hidden = array( 'update', 'update-network', 'update-core', 'update-core-network', 'upgrade', 'upgrade-network', 'network' );
$show = ! in_array( $screen->id, $hidden, true );
if ( apply_filters( 'wp_auth_check_load', $show, $screen ) ) {
wp_enqueue_style( 'wp-auth-check' );
wp_enqueue_script( 'wp-auth-check' );
add_action( 'admin_print_footer_scripts', 'wp_auth_check_html', 5 );
add_action( 'wp_print_footer_scripts', 'wp_auth_check_html', 5 );
}
}
上記を追加するというのもやってみたのですが、書く場所が違うのかエラー解消に至りませんでした⋯。
具体的にはどこに書こうとしましたか?サーバーIDなど特定されない範囲でパス含めファイル名教えてください。
失礼しました。
テーマのfunctions.phpのことだと思っておりました。
テーマのfunctions.phpでないのであれば、編集しないでください。
@abell13
上で示されたコードは、wp-includes/functions.phpだと思います。6.8.3であれば6121行目は
trigger_error( $message, $error_level );
で、エラーを表示する処理となります。これによって表示されたエラーは全部 wp-includes/functions.php on line 6121となるため、このファイルにエラー箇所があるとは限りません。
そのためテーマに原因があるとするならば、Aki Hamanoさんが書かれたように、テーマディレクトリ内(フリー配布のPHPも含む)にwp_enqueue_scriptが書かれた箇所があるはずなので、もう一度探してみることをおすすめします。
wp_enqueue_scriptがないということであれば、別の原因も考えられますので「利用できない状態」が具体的にどのような状態なのか説明されると回答がつきやすくなると思います。
コメントありがとうございます。
一旦フリー配布のPHPは停止(ディレクトリからは一時削除)し、再度0から全体を見直しました。
ご推察の通り、header.php の中にwp_enqueue_script を使用している箇所があり、一旦そちらもコメントアウトしてみたのですが、状態としては改善されない状況です。
状態
サイトの背景画像のみ表示され、ヘッダーやフッター含むコンテンツが全て表示されない
※デバッグログでは、PHPのエラーが起きていた箇所を停止しているためエラーは出ていない
wp_enqueue_script を入れていた箇所のコードも念の為記載いたします。
該当箇所はcomment_reply を呼び出しているようなのですが、念の為ヘッダーに記載しているPHP部分をすべて記載しております(上述の通り、wp_enqueue_script部分をコメントアウトしてみましたが、状況は変わらずでしたので、PHPの他の箇所にも問題があるのかも、と思いすべて記載しております)
背景画像以外表示されないという状態なので、ヘッダーの読み込みで躓いているのかな⋯と思っているのですが、PHP部分以外は静的ページと変わらないコードでローカルでの表示は問題なく心当たりがあまりありません。。
<?php
global $paged, $wp_query;
if( !$max_page )
$max_page = $wp_query->max_num_pages;
if( !$paged )
$paged = 1;
$nextpage = intval($paged) + 1;
if( null === $label )
$label = 'Next Page »';
if( !is_singular() && ( $nextpage <= $max_page ))
{
?>
<link rel="next" href="<?php echo next_posts( $max_page, false ); ?>"/>
<?php
}
global $paged;
if( null === $label )
$label = '« Previous Page';
if( !is_singular() && $paged > 1 )
{
?>
<link rel="prev" href="<?php echo previous_posts( false ); ?>"/>
<?php
}
?>
<?php
if ( is_singular() ) wp_enqueue_script( 'comment-reply' );
?>
<?php wp_head(); ?>
コメントアウトしてみたのですが、状態としては改善されない状況
とのことですが、スーパーリロード等でブラウザのキャッシュをクリアされましたでしょうか?
とりあえず、バックアップを行ってから
<?php
if ( is_singular() ) wp_enqueue_script( 'comment-reply' );
?>
の部分を消去して、テーマのfunctions.phpに
add_action( 'wp_enqueue_scripts' , function(){ if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); } );
を追記して、キャッシュクリア後リロードしてみてください。
また、シェルスクリプトやアプリケーションなどで全文検索すると見落としがなくなると思います。