• abell13

    (@abell13)


    PHPのバージョンアップ(7.3→8.3)をしたところ、それまで使用していたプラグイン、テーマが利用できなくなりました。プラグインの方は無効化→一つ一つ有効化で問題のありそうなものを特定できたのですが、テーマの方は以下のメッセージが表示されたまま、今も利用できない状態です。

    Notice: 関数 wp_enqueue_script が誤って呼び出されました。スクリプトおよびスタイルは wp_enqueue_scriptsadmin_enqueue_scriptslogin_enqueue_scripts フック以降のみに登録・キュー追加できます。 この通知は jquery ハンドルによってトリガーされました。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 3.3.0 で追加されました) in /home/xxxxx/x/xxxxxxxxxx/web/wp/wp-includes/functions.php on line 6121

    wp_enqueue_scriptについて色々と調べ、functions.phpに追記したりもしてみたのですが、現状解決できておりません。PHP含めエンジニアリング全般に明るくなく、Wordpressも手探りで構築しているため、調査や対応に限界があり⋯有識者の方にアドバイスいただけたらと思いこちらで質問させていただきました。不足している情報などあれば、ご指摘いただければ幸いです。どうぞよろしくお願いいたします。

    • このトピックは1ヶ月前にSetouchi Kotoriが編集しました。理由: サーバー情報をマスクしました
12件の返信を表示中 - 1 - 12件目 (全12件中)
  • モデレーター Setouchi Kotori

    (@setouchikotori)

    お使いのテーマ名をご共有ください。

    トピック投稿者 abell13

    (@abell13)

    テーマは自作したものになります(バージョンアップ前までは問題なく表示・動作しておりました)
    テーマフォルダに入れていたフリー配布のPHPが問題だったのかと思い、PHP8.xで使用可能なものに差し替えてみたのですが、エラー自体は変わらない状況です。

    arborvitae666

    (@arborvitae666)

    functions.phpにwp_enqueue_script()を直に書くとこのエラーが発生するようです。

    function hoge(){
    wp_enqueue_script();
    }
    add_action( 'wp_enqueue_scripts' , 'hoge' );

    のようにフックを追加すると解消されるようですが、試されましたか?

    • この返信は1ヶ月前にarborvitae666が編集しました。理由: typo
    トピック投稿者 abell13

    (@abell13)

    アドバイスありがとうございます。
    おそらく問題の箇所はこちらだと思うのですが、wp_enqueue_scriptadd_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 );
    }
    }
    Aki Hamano

    (@wildworks)

    こんにちは。

    Notice: 関数 wp_enqueue_script が誤って呼び出されました。スクリプトおよびスタイルは wp_enqueue_scriptsadmin_enqueue_scriptslogin_enqueue_scripts フック以降のみに登録・キュー追加できます。 

    ここに原因そのものが書かれていると思います。

    自作のテーマとのことですが、そのテーマディレクトリ内で wp_enqueue_script() を実行している箇所はありませんか? そのコードが適切なフックして実行されているかを調べるとよいと思います。

    そもそもフックの概念がわからないという場合は、テーマディレクトリ内で wp_enqueue_script() が書かれている箇所前後のコードをここに貼っていただくと、原因が調査しやすいかもしれません。

    arborvitae666

    (@arborvitae666)

    @abell13

    並列に書いているのがよろしくないわけではなく、

    wp_enqueue_script( 'wp-auth-check' );

    がフックに登録されていないのが問題だと思われます。どれに登録したいのか分かりませんが、例えば

    add_action( 'wp_enqueue_scripts' , function(){ wp_enqueue_script( 'wp-auth-check' ); } );

    のようにすれば解消されるのではないでしょうか。

    トピック投稿者 abell13

    (@abell13)

    コメント、アドバイスありがとうございます。

    最初にテーマディレクトリの中で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 );
    }
    }
    skillsharejp

    (@skillsharejp)

    上記を追加するというのもやってみたのですが、書く場所が違うのかエラー解消に至りませんでした⋯。

    具体的にはどこに書こうとしましたか?サーバーIDなど特定されない範囲でパス含めファイル名教えてください。

    arborvitae666

    (@arborvitae666)

    失礼しました。

    テーマのfunctions.phpのことだと思っておりました。

    テーマのfunctions.phpでないのであれば、編集しないでください。

    arborvitae666

    (@arborvitae666)

    @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がないということであれば、別の原因も考えられますので「利用できない状態」が具体的にどのような状態なのか説明されると回答がつきやすくなると思います。

    トピック投稿者 abell13

    (@abell13)

    コメントありがとうございます。

    一旦フリー配布の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 &raquo;';
      if( !is_singular() && ( $nextpage <= $max_page ))
    {
    ?>
      <link rel="next" href="<?php echo next_posts( $max_page, false ); ?>"/>
      <?php
    }
    global $paged;
    if( null === $label )
       $label = '&laquo; 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(); ?>
    • この返信は1ヶ月前にabell13が編集しました。理由: 記載漏れ
    arborvitae666

    (@arborvitae666)

    コメントアウトしてみたのですが、状態としては改善されない状況

    とのことですが、スーパーリロード等でブラウザのキャッシュをクリアされましたでしょうか?

    とりあえず、バックアップを行ってから

      <?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' ); } );

    を追記して、キャッシュクリア後リロードしてみてください。

    また、シェルスクリプトやアプリケーションなどで全文検索すると見落としがなくなると思います。

12件の返信を表示中 - 1 - 12件目 (全12件中)

このトピックに返信するにはログインが必要です。