वर्डप्रेस में, मेरा लक्ष्य साइडबार में रखे गए प्रत्येक विजेट को कस्टम क्लास देने में सक्षम होना है। पसंदीदा रूप से मैं इस वर्ग को प्रत्येक विजेट की विजेट सेटिंग्स में जोड़ना चाहता हूं। तीसरे पक्ष के विजेट भी।वर्डप्रेस: सभी विजेट सेटिंग्स में कॉन्फ़िगरेशन विकल्प जोड़ें
मैं, classname बदलने की सोच रहा था क्योंकि classname पहले से ही register_sidebar समारोह (% 2 $ s) को पारित कर दिया है:
<?php
register_sidebar(array('before_widget' => '<aside id="%1$s" class="widget %2$s blue">'));
?>
बेशक मैं WP कोर कोड या 3 पार्टी परिवर्तन नहीं होना चाहिए प्लगइन्स। इसका मतलब है कि मुझे एक प्लगइन लिखना होगा जो विजेट कॉन्फ़िगरेशन प्रक्रिया में हुक करेगा।
मैं पहले से ही पता चला कि यह 'in_widget_form' कार्रवाई में hooking द्वारा, सभी विजेट फ़ॉर्म संशोधित किया जा सकता है:
<?php
add_action('in_widget_form', 'teaserWidgetAddToForm');
function teaserWidgetAddToForm($widget_instance) {
?>
<label for="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>">Custom classname(s):</label>
<input type="text" id="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>" name="<?php echo $widget_instance->get_field_name('teaser-classname'); ?>">
<?php
}
?>
इस डेटा विजेट सुपर वर्ग द्वारा बचाया जाना चाहिए, लेकिन आप इस डेटा को प्राप्त कैसे (इसलिए जब विजेट सेटिंग्स को खोलना बाद में दिखाता है कि आपने पहले क्या भरा था)
और, यह सहेजा गया डेटा विजेट उदाहरण में रखा जाना चाहिए- यह कैसे किया जाता है? मैं की तरह कुछ का उपयोग करके लगता है:
<?php
$wp_registered_widgets[<widget_id>]['callback'][0]['widget_options']['classname'] = <chosen_class>;
?>
तो मूल रूप से
2 प्रश्न हैं:
- मैं यदि हां, तो इस समस्या (व्यक्तिगत विजेट का स्टाइल)
- संबोधित करने के लिए उचित तरीके से उपयोग कर रहा हूँ क्या मैं वर्डप्रेस या तृतीय पक्ष प्लगइन स्रोत कोड को संशोधित किए बिना अतिरिक्त सेटिंग्स को सहेजने और पुनर्प्राप्त करने के लिए विजेट उदाहरण को संशोधित कर सकता हूं।
शानदार! इस बीच में मैं नई सेटिंग्स को सहेजने में सक्षम था और मैं "widget_display_callback" हुक का उपयोग करने के लिए आया था। लेकिन यह एहसास नहीं हुआ कि आप झूठी वापसी कर सकते हैं और $ विजेट-> विजेट() स्वयं को कॉल कर सकते हैं। बहुत धन्यवाद! – publicJorn