wp_enqueue_script ถูกเรียกอย่างไม่ถูกต้อง


20

ฉันไม่รู้ว่า แต่ตอนนี้ฉันได้รับข้อผิดพลาดนี้:

ประกาศ: wp_enqueue_style ถูกเรียกอย่างไม่ถูกต้อง ไม่ควรลงทะเบียนหรือจัดคิวสคริปต์และสไตล์จนกว่าจะมีการ wp_enqueue_scripts, admin_enqueue_scripts, หรือ login_enqueue_scripts hooks โปรดดูการดีบักใน WordPress สำหรับข้อมูลเพิ่มเติม (ข้อความนี้ถูกเพิ่มเข้ามาในเวอร์ชั่น 3.3) ใน wp-include / Functions.php ที่บรรทัด 3049

ประกาศ: wp_enqueue_script ถูกเรียกอย่างไม่ถูกต้อง ไม่ควรลงทะเบียนหรือจัดคิวสคริปต์และสไตล์จนกว่าจะมีการ wp_enqueue_scripts, admin_enqueue_scripts, หรือ login_enqueue_scripts hooks โปรดดูการดีบักใน WordPress สำหรับข้อมูลเพิ่มเติม (ข้อความนี้ถูกเพิ่มเข้ามาในเวอร์ชั่น 3.3) ใน wp-include / Functions.php ที่บรรทัด 3049

คำเตือน: ไม่สามารถแก้ไขข้อมูลส่วนหัว - ส่วนหัวที่ส่งไปแล้ว (เอาต์พุตเริ่มต้นที่ wp-include / function.php: 3049) ใน wp-login.php ที่บรรทัด 415

คำเตือน: ไม่สามารถแก้ไขข้อมูลส่วนหัว - ส่วนหัวที่ส่งไปแล้ว (เอาต์พุตเริ่มต้นที่ wp-include / functions.php: 3049) ใน wp-login.php ที่บรรทัด 427

นี่คือสิ่งที่ฉันได้รับเมื่อฉันพยายามเข้าสู่ระบบ ... ในเว็บไซต์อื่นฉันมีข้อผิดพลาดสองข้อแรกเท่านั้น ฉันพยายามแก้ไข แต่ไม่สามารถทำได้ ข้อเสนอแนะใด ๆ


1
Notices ดูเหมือนตัวเองสวยอธิบาย คุณลองทำอะไรแล้วใช้ไม่ได้ผล?
s_ha_dum

@s_ha_dum ฉันลองหลายสิ่งที่ฉันพบบน Google ... ตอนนี้โซลูชันของ toscho ทำงานให้ฉันแล้วและฉันสามารถลงชื่อเข้าใช้แผงผู้ดูแลระบบของฉันได้ แต่สิ่งที่ฉันเห็นคือมีบางอย่างผิดปกติในการโหลดเนื่องจากตัวอักษรคือ ไม่เหมือนเดิม ฉันได้รับข้อผิดพลาดต่อไปนี้:
raiden

คำตอบ:


15

ปิดใช้งานปลั๊กอินทั้งหมดและเปลี่ยนเป็นธีมเริ่มต้น มันควรจะหายไปแล้ว

จากนั้นเปิดใช้งานแต่ละขั้นตอน addon ทีละขั้นตอนจนกว่าปัญหาจะกลับมา คุณรู้แหล่งที่มาตอนนี้สมมติว่าปลั๊กอิน

การเรียกใช้ปลั๊กอินอาจwp_enqueue_scriptเร็วเกินไป ค้นหาสิ่งที่เกิดขึ้นทั้งหมดของฟังก์ชั่นนั้นจากนั้นตรวจสอบให้แน่ใจว่าพวกมันถูกผูกไว้กับการกระทำเฉพาะ

  • wp_register_script() ควรได้รับการเรียกให้ดำเนินการ wp_loaded
  • wp_enqueue_script ในหนึ่งในการกระทำ
    • wp_enqueue_scripts,
    • admin_enqueue_scripts,
    • customize_controls_enqueue_scripts หรือ
    • login_enqueue_scripts(ดูหัวข้อนี้สำหรับหลัง)

ปัญหาคือฉันไม่สามารถเข้าสู่ระบบเพราะฉันยังได้รับข้อผิดพลาดแปลก ๆ นี้กับคุกกี้ ข้อผิดพลาดบอกว่าฉันบล็อกคุกกี้ในเบราว์เซอร์ของฉัน แต่ฉันไม่ได้บล็อคพวกเขา ... มันแปลกมากเพราะทุกสิ่งที่ฉันทำวันนี้มันเพิ่มสองสามบรรทัดใน style.css ทุกอย่างดี แต่ ไม่กี่ชั่วโมงหลังจากฉันพบข้อผิดพลาดเหล่านั้น
raiden

@ กลัวแล้วเปลี่ยนชื่อไดเรกทอรีปลั๊กอินของคุณต่อ FTP ทำเช่นเดียวกันสำหรับชุดรูปแบบที่ใช้งานในปัจจุบัน
fuxia

ตอนนี้ฉันสามารถเข้าสู่แผงของฉัน ... ขอบคุณ! แต่ตอนนี้ฉันได้รับข้อผิดพลาดมากกว่าหนึ่งคำเตือน: ไม่สามารถแก้ไขข้อมูลส่วนหัวได้ - ส่วนหัวที่ส่งไปแล้ว (เอาต์พุตเริ่มต้นที่ wp-include / functions.php: 3049) ใน wp-include / pluggable.php ที่บรรทัด 896
raiden

4

ตามโซลูชันของ Gregory Schultz :

ห่อสคริปต์และสไตล์ทั้งหมดของคุณไว้ในฟังก์ชั่นและขอฟังก์ชั่นนั้นเข้ากับenqueueการกระทำเป้าหมายของคุณ 👇

function my_admin_scripts() {
  wp_enqueue_style( 'admin-css', get_stylesheet_directory_uri() . '/admin/css/admin.css' );
  wp_enqueue_script( 'admin-js', get_stylesheet_directory_uri() . '/admin/js/admin.js', true );
}
add_action( 'admin_enqueue_scripts', 'my_admin_scripts' );

wp_enqueue_scripts - ส่วนหน้า

admin_enqueue_scripts - หน้าผู้ดูแลระบบ

login_enqueue_scripts - หน้าเข้าสู่ระบบ


2

เหตุผลที่สิ่งนี้เกิดขึ้นเพราะฟังก์ชั่นเหล่านี้ถูกเรียกใช้โดยตรงจากไฟล์ functions.php โดยไม่ต้องใช้ฟังก์ชั่น ค้นหาว่าบรรทัดใดใน functions.php ที่ไม่ได้อยู่ในฟังก์ชันเช่นนี้แล้วเพิ่มเข้าไป

ตัวอย่างสำหรับ datepicker:

- แทนที่สิ่งนี้ใน functions.php:

wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_style('jquery-ui-css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
wp_enqueue_style('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');

- เราเพิ่มสิ่งนี้

    // เรากำหนดฟังก์ชั่น:
    ฟังก์ชัน MYTHEME_scripts () {
    wp_enqueue_script ( 'jQuery-UI-datepicker');
    }

    // เพิ่มฟังก์ชั่นในรายการโหลด WP
    add_action ('wp_enqueue_scripts', 'MYTHEME_scripts');

    ฟังก์ชัน MYTHEME_styles () {
    wp_enqueue_style ('jquery-ui-css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
    wp_enqueue_style ('jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css');
    }

    // เพิ่มฟังก์ชั่นในรายการโหลด WP
    add_action ('wp_enqueue_style', 'MYTHEME_styles');

หวังว่ามันจะใช้งานได้


1

มันหมายความว่ามี 3 "จุดปลาย" wp_enqueue_script()ซึ่งเป็น wp_enqueue_scripts สำหรับส่วนหน้า, login_enqueue_scripts สำหรับหน้าจอเข้าสู่ระบบ, admin_enqueue_scripts สำหรับแดชบอร์ดผู้ดูแลระบบ ตรวจสอบลิงค์นี้

คุณได้รับข้อผิดพลาดนี้เนื่องจากwp_enqueue_script()ถูกเรียกว่าไม่เหมาะสม


ฉันเข้าใจว่ามีอะไรบ้าง แต่ฉันไม่รู้วิธี (ใช้งาน) นี้ "การแก้ไข: ใช้ wp_enqueue_scripts แทน"
raiden

หมายความว่าคุณต้องใช้wp_enqueue_scriptsแทนwp_print_stylesแต่ฉันสงสัยว่ามันเกี่ยวข้องกับกรณีของคุณ มันเป็นเพียงตัวอย่างของการแก้ไขปัญหา ในกรณีของคุณมีฟังก์ชั่นบางอย่างในปลั๊กอินหรือชุดรูปแบบที่ใช้ผิดwp_enqueue_script()เพื่อให้คุณได้รับข้อผิดพลาดนี้ ... ฉันเดา
JMau

ฉันได้รับNotice: wp_register_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks.ฉันห่อสคริปต์และสไตล์ของฉันทั้งหมดในฟังก์ชั่นและการแจ้งเตือนก็หายไป
Gregory Schultz

นอกจากนั้นฉันไม่ได้รับข้อผิดพลาด
เกรกอรี่ชูลทซ์

1

แทนที่จะปิดใช้งานปลั๊กอินทั้งหมดของคุณทีละตัวหรือแก้ไข codebase ของคุณเพื่อแก้ไขข้อบกพร่องคุณสามารถใช้ปลั๊กอินQuery Monitorเพื่อ จำกัด แหล่งที่มาของข้อผิดพลาดให้แคบลง

เมื่อคุณเห็นข้อผิดพลาดนี้รายงานในคอนโซล:

wp_register_style ถูกเรียกอย่างไม่ถูกต้อง ไม่ควรลงทะเบียนหรือจัดคิวสคริปต์และสไตล์จนกว่าจะมีการ wp_enqueue_scripts, admin_enqueue_scripts, หรือ login_enqueue_scripts hooks โปรดดูการดีบักใน WordPress สำหรับข้อมูลเพิ่มเติม (ข้อความนี้ถูกเพิ่มเข้ามาในเวอร์ชั่น 3.3.0)

คอลัมน์สุดท้าย ( Component) จะบอกปลั๊กอินที่ทำให้เกิดข้อผิดพลาด จากนั้นทำการค้นหาภายในปลั๊กอินนั้น (หรือธีม) เพื่อค้นหาและแก้ไขปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.