ข้อความที่อัปเดตการตั้งค่า API จะไม่แสดงหากหน้าผู้ดูแลระบบที่กำหนดเองไม่ได้เชื่อมต่อกับ add_options_page ()


9

รับการเล่นด้วยการตั้งค่า API และพบว่าข้อความ (สำหรับความสำเร็จหรือข้อผิดพลาด) จะปรากฏเฉพาะเมื่อหน้าการตั้งค่าถูกเชื่อมต่อกับเมนู WordPress ผ่านทาง add_options_page () สิ่งอื่นใดจะไม่ทำงานเช่น add_dashboard_page () ต้องการทราบว่านี่เป็นเรื่องจริงหรือไม่? รหัสตัวอย่างที่ฉันลองใช้คือคำตอบที่มีคลาส "RegisteredSettingsTest" ที่ตำแหน่งขอ hook register_settings สำหรับ Settings API เมื่อต้องการอัปเดตตัวเลือกนอก API การตั้งค่า

คำตอบ:


21

ขอบคุณ Chip ( กวดวิชาการตั้งค่า API ที่ยอดเยี่ยม ) และ t31os ( ตัวอย่างโค้ดที่ยอดเยี่ยมสำหรับการทดสอบอย่างรวดเร็ว ) สำหรับคำแนะนำของคุณ

ฉันทำการขุดเพิ่มเติมและพบว่าข้อความเริ่มต้นสามารถแสดงได้จริงถ้าฉันขอเข้าเมนูใด ๆ แต่ถ้าเรียกฟังก์ชั่นsettings_errors ()เท่านั้น

ตัวอย่างเช่นการแก้ไขโค้ด t31os ดังต่อไปนี้:

<div class="wrap">
  <h2>Test</h2>
  <?php settings_errors(); ?>
  <form action="options.php" method="post">

ข้อความข้อผิดพลาดที่กำหนดเองสามารถเพิ่มได้โดยการเรียกฟังก์ชั่นadd_settings_error ()สำหรับการแสดงผลสำเร็จหรือข้อความล้มเหลวโดยการระบุ$typeพารามิเตอร์เป็น 'ข้อผิดพลาด' หรือ 'ปรับปรุง'


นี่ฉันก็นิ่งงันอยู่พักหนึ่ง! การใช้settings_errors();กลอุบายขอบคุณที่โพสต์ติดตาม Jesse!
CommentLuv

10

ฉันใช้การรวมการตั้งค่า API กับธีมของฉันใช้add_theme_page()และไม่มีปัญหาในการแสดงประกาศของผู้ดูแลระบบ

ฉันสงสัยว่าเป็นปัญหากับรหัสของคุณมากกว่าข้อ จำกัด การตั้งค่า API

คุณสามารถโพสต์รหัสจริงของคุณได้หรือไม่ดังนั้นเราสามารถช่วยคุณแก้ปัญหาที่เกี่ยวข้องกับรหัสได้บ้าง

แก้ไข

คุณอาจต้องแสดงผลการแจ้งเตือนของผู้ดูแลระบบอย่างชัดเจน ตัวอย่างเช่นนี่คือสิ่งที่ฉันใช้ในฟังก์ชั่นมาร์กอัปหน้าการตั้งค่าของฉัน:

<?php if ( isset( $_GET['settings-updated'] ) ) {
    echo "<div class='updated'><p>Theme settings updated successfully.</p></div>";
} ?>

ฉันคิดว่าคุณสามารถทำสิ่งที่คล้ายกันเพื่อแจ้งข้อผิดพลาดได้เช่นกัน


ดูคำตอบที่อัปเดต
Chip Bennett

ที่ผมใช้รหัสสามารถพบได้ที่Pastebin ขอโทษถ้าฉันยังไม่ชัดเจนพอ สิ่งที่ฉันสังเกตคือถ้าฉันเชื่อมต่อกับเมนูผ่านทางadd_options_page()และบันทึกการตั้งค่าข้อความ "บันทึกการตั้งค่า" จะปรากฏขึ้น อย่างไรก็ตามหากฉันเปลี่ยนรหัสเพื่อใช้add_theme_page()หรือadd_dashboard_page()ข้อความ "การตั้งค่าที่บันทึกไว้" จะไม่ปรากฏขึ้น
Jesse van Couten

ใช่ ... คุณเพิ่มรหัสตามตัวอย่างด้านบนหรือไม่ คุณต้องเพิ่มอย่างชัดเจนในฟังก์ชั่นมาร์กอัปหน้าการตั้งค่าของคุณ
Chip Bennett

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