विजेट विकल्प 'विजेट बाहर' का उपयोग करना


13

मैं विजेट विकल्पों में कुछ मापदंडों को सहेजना चाहता हूं जो बाद में किसी अन्य पृष्ठ में पारित हो जाते हैं। विजेट एक रूप है जो एक webservice कहता है।

मैं जिन विकल्पों को पास करना चाहता हूं, वेब्स सर्विस के लिए प्रमाणीकरण हैं जो वर्तमान में परिणाम पृष्ठ (एक टेम्पलेट के रूप में किया गया) में कठिन कोडित हैं। इसलिए उन्हें वेबसाइट उपयोगकर्ता से छिपाया जाना चाहिए।

विजेट / प्लगइन से कोड:

 function widget($args, $instance){
  extract($args);
  $title = apply_filters('widget_title', empty($instance['title']) ? 'Choose a service' : $instance['title']);
  $lineOne = empty($instance['username']) ? '' : $instance['username'];
  $lineTwo = empty($instance['password']) ? '' : $instance['password'];

  # Before the widget

  echo $before_widget; // etc...

परिणाम पृष्ठ ...

$url = "http://www.nhs.uk/NHSCWS/Services/ServicesSearch.aspx?user=".[USERNAME]."&pwd=".[PASSWORD]."&q=".$_POST['PostCode']."&type=".$_POST['ServiceType']."";

फिर भी सीखना कि WP एक साथ कैसे लटका हुआ है, इसलिए n00b प्रश्न के लिए क्षमा करें।

जवाबों:


16

@ JonathonByrd का जवाब शायद 'सबसे अच्छा' है - निश्चित रूप से get_optionयदि संभव हो तो आपको इसका उपयोग करना चाहिए , क्योंकि कोई गारंटी नहीं है कि विकल्प का नाम वर्डप्रेस संस्करणों के बीच एक ही रहेगा।

इसी तरह - @JonathonByrd भी एक वैश्विक वैरिएबल का उपयोग करने पर निर्भर करता है जिसे हटाया जा सकता है / नाम बदला जा सकता है (हालांकि शायद बहुत संभावना नहीं है)।

दुर्भाग्य से कोई सार्वजनिक आवरण नहीं है, जिसका हम मज़बूती से उपयोग कर सकते हैं। निकटतम get_settingsआपके विजेट वर्ग की विधि है। मान लें कि आप विजेट क्लास हैं My_Widget_Class, तो:

 $dummy = new My_Widget_Class();
 $settings = $dummy->get_settings();

$settingsफिर फॉर्म की एक सरणी है array(instance number => settings)। आमतौर पर आपके विजेट में कोई आईडी होगी my-widget-class-3- और 'उदाहरण संख्या' यहां 3 है, और इसी तरह

 $settings[3]

विजेट के लिए सेटिंग्स (एक सरणी के रूप में) देता है my-widget-class-3। मुझे लगता है कि यह एक अधिक विश्वसनीय और भविष्य की प्रमाण विधि है।


4

एक शोर सवाल नहीं है।

आपको MySQL में डुबकी (PhpMyAdmin या समान का उपयोग करके) और पहले विकल्प का नाम प्राप्त करना होगा। निम्नलिखित एसक्यूएल विजेट विकल्पों की सूची देगा:

SELECT *
FROM `wp_options`
WHERE `option_name`
REGEXP '^widget_'
LIMIT 0 , 30

फिर अपने टेम्पलेट में (या किसी तरह के php exec plugin के साथ पोस्ट / पेज) आप इसे get_option()पसंद कर सकते हैं:

<?php echo get_option('your_widget_option_name'); ?>

ए टी वॉयला!


Thx लेकिन कुछ भी चयनित क्वेरी से वापस नहीं आया।
जॉनीबिजले

अजीब है कि। विजेट प्रदान करने वाले प्लगइन का नाम क्या है?
टॉम राइट

4

सभी विजेट और उनके विकल्प भीतर संग्रहीत हैं global $wp_registered_widgets। बस इस चर को लोड करें और उन विजेट विकल्पों को खोजने के लिए सामग्री प्रिंट करें, जिन्हें आप खोज रहे हैं।


3

मैंने स्टीफन हैरिस द्वारा सुझाई गई विधि का उपयोग किया।

$dummy = new My_Widget_Class();
$settings = $dummy->get_settings();
$settings = reset($settings);

रीसेट () सरणी से पहला मुख्य मूल्य देता है, अगर आपको नहीं पता कि आपके विजेट की आईडी क्या है।

नोट: यदि विजेट की कई प्रतियां सक्रिय हैं, तो यह मदद नहीं करता है। क्योंकि यह केवल विजेट की पहली प्रति की सेटिंग लौटाता है।


0

शायद मैं आपके प्रश्न को गलत तरीके से पढ़ रहा हूं, लेकिन ऐसा लगता है कि आप जो करना चाहते हैं वह वर्डप्रेस में कहीं न कहीं आपके विजेट (उपयोगकर्ता नाम और पासवर्ड) से कुछ विकल्प या जानकारी सहेज रहा है, जहां आप विजेट कोड के बाहर उन्हें फिर से एक्सेस कर सकते हैं। । यदि यह सही है, तो आप add_option () फ़ंक्शन (और साथ ही update_option) (और delete_option) को आवश्यक रूप से देखना चाहते हैं ।

एक विकल्प सेट करने के लिए, बस यह करें:

<?php add_option("my_widget_option_name", 'option_value'); ?>

फिर आप इसे WP_ के भीतर कहीं भी प्राप्त कर सकते हैं जैसे get_option को कॉल करके:

<?php $option_val = get_option("my_widget_option_name"); ?>

क्या आप थोड़ा और समझा सकते हैं कि आप क्या करने की कोशिश कर रहे हैं? क्या विजेट रूप में सेवा के लिए उपयोगकर्ता नाम और पासवर्ड सेट करने का विचार है और फिर वेबसाइट उपयोगकर्ता (उपयोगकर्ता नाम और पासवर्ड को प्रदर्शित किए बिना) को कुछ सामग्री वितरित करने के लिए प्रत्येक पृष्ठ लोड पर सेवा के साथ उन लोगों को पास करने के लिए है?

ठीक है धन्यवाद, यह एक कोशिश दे देंगे। मैं इस समय साथ-साथ काम कर रहा हूं, आंशिक रूप से समय के दबाव के कारण।
जॉनीबिजले

आगे की व्याख्या करने के लिए, विजेट 2 विकल्प, सेवा की आवश्यकता और डाक कोड। प्रपत्र एक विशिष्ट पृष्ठ पर प्रस्तुत होता है (मुझे पता है कि मैं वर्तमान पृष्ठ का उपयोग कर सकता हूं) जिसे मैंने खोज-परिणाम कहा है। खोज परिणाम उन विकल्पों को लेता है, जिन्हें मैं url में webservice को कॉल करता हूं। परिणाम एक्सएमएल के रूप में वापस आते हैं जो एक सरणी में पारित हो जाता है और फिर उपयोगकर्ता को आउटपुट देता है। यह साइट उसी webservice का उपयोग कर रही है: camden.nhs.uk/nhs-search-results.htm?type=1&q=E17
JohnnyBizzle

... इरादा वेबसर्विस के लिए उपयोगकर्ता नाम / pwd के लिए मापदंडों का उपयोग करने का था ताकि अन्य साइटें एक ही विजेट का उपयोग कर सकें।
जॉनीबिजले

ठीक है, इसलिए साइट मालिकों को अपने स्वयं के उपयोगकर्ता नाम और पासवर्ड को इनपुट करने की आवश्यकता होगी, सही? एक बार जब वे ऐसा करते हैं, तो वह उस जानकारी का उपयोग दूसरी साइट से XML को खींचने के लिए करता है और फिर उसे प्रदर्शित करता है। उस स्थिति में, आप get_option और add_option का उपयोग करना चाहते हैं। Apply_filters फ़ंक्शन चीजों के प्रदर्शन पक्ष पर काम करता है - अर्थात यह आपके डेटाबेस में डेटा नहीं बदलता है, इसे अंतिम उपयोगकर्ता को प्रदर्शित करने से पहले इसे संशोधित करता है। ऐसा लगता है कि आप विजेट में फॉर्म इनपुट में लेना चाहते हैं और इसे add_option के साथ सहेजना चाहते हैं। इस साइट में एक महान ट्यूटोरियल है: valums.com/create-wordpress-widget
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.