यदि कस्टम व्यवस्थापक पृष्ठ add_options_page () में नहीं झुका है तो API अपडेट किए गए संदेश दिखाई नहीं देंगे


9

सेटिंग्स एपीआई के साथ खेल रहे हैं और पाया कि संदेश (सफलता या त्रुटियों के लिए) केवल तभी प्रदर्शित होते हैं जब सेटिंग्स पृष्ठ को add_options_page () के माध्यम से वर्डप्रेस मेनू में डाला जाता है। कुछ भी काम नहीं करेगा उदाहरण के लिए add_dashboard_page ()। जानना चाहेंगे कि क्या यह सच है? मैंने जिस सैंपल कोड के साथ कोशिश की, उसका उत्तर है, "RegisteredSettingsTest" क्लास जिसमें सेटिंग API के लिए register_settings को कहाँ से हुक करना है, जब सेटिंग्स API के बाहर भी विकल्प अपडेट करना चाहते हैं?

जवाबों:


21

धन्यवाद चिप ( उत्कृष्ट सेटिंग्स एपीआई ट्यूटोरियल ) और 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();ट्रिक का उपयोग करते हुए , जेसी को फॉलो करने के लिए धन्यवाद!
कमेंटलव

10

मैं अपने थीम के साथ सेटिंग्स एपीआई एकीकरण का उपयोग करता हूं, उपयोग करता हूं add_theme_page(), और व्यवस्थापक नोटिस प्रदर्शित करने में कोई समस्या नहीं है।

मुझे संदेह है कि यह सेटिंग API सीमा के बजाय आपके कोड की समस्या है ।

क्या आप अपना वास्तविक कोड पोस्ट कर सकते हैं, इसलिए हम आपको किसी भी कोड से संबंधित समस्याओं को हल करने में मदद कर सकते हैं?

संपादित करें

आपको अपने व्यवस्थापक नोटिस को स्पष्ट रूप से आउटपुट करने की आवश्यकता हो सकती है। उदाहरण के लिए, यहां मैं अपनी सेटिंग पृष्ठ मार्कअप फ़ंक्शन का उपयोग करता हूं:

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

मुझे लगता है कि आप त्रुटि नोटिस के लिए भी कुछ ऐसा ही कर सकते हैं।


अद्यतन उत्तर देखें।
चिप बेनेट

मेरे द्वारा उपयोग किया गया कोड पास्टबिन में पाया जा सकता है । माफी अगर मैं पर्याप्त स्पष्ट नहीं हूँ। यदि मैं add_options_page()सेटिंग्स के माध्यम से एक मेनू में झुका और एक "सेटिंग्स सहेजी गई" संदेश प्रदर्शित किया जाएगा तो मैं क्या निरीक्षण करता हूं । हालाँकि, यदि मैंने उपयोग करने के लिए कोड को बदल दिया add_theme_page()या add_dashboard_page(), तो डिफ़ॉल्ट "सेटिंग्स सेव" संदेश प्रकट नहीं होगा।
बजे जेसी वैन कॉटन जूल

सही ... क्या आपने उपरोक्त उदाहरण के अनुसार कोड जोड़ा है? आपको इसे अपनी सेटिंग पृष्ठ मार्कअप फ़ंक्शन में स्पष्ट रूप से जोड़ना होगा।
चिप बेनेट

मैं चापलूसी कर रहा हूं आपने मेरे परीक्षण कोड का उपयोग किया था, चिप के ऊपर बनाने के लिए सही है कि आपको नोटिस को स्पष्ट रूप से जोड़ना होगा। अपनी सेटिंग पेज जेसी .. के साथ शुभकामनाएँ :) :)
t31os
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.