मैंने इस पर कुछ शोध करने की कोशिश की है लेकिन अभी तक कुछ ठोस नहीं पाया है। मेरे पास एक प्लगइन है जो मैं पिछले संस्करण और नए संस्करण के बीच काम कर रहा हूं और हमने विजेट में कुछ अपडेट किए हैं जो कुछ सेटिंग्स नामों (बैकएंड पर) को बदलता है और मुझे ऐसा करने के लिए अपग्रेड रूटीन बनाने में परेशानी हो रही है।
मैंने अब तक जो किया है, वह (अधिकतर) काम का लगता है:
$widget = get_option( 'widget_name' );
if( is_array( $widget ) && ! empty( $widget ) ) {
foreach( $widget as $a => $b ) {
if( ! is_array( $b ) ) {
continue;
}
foreach( $b as $k => $v ) {
$widget[$a]['setting1'] = $widget[$a]['oldsetting1'];
$widget[$a]['setting2'] = $widget[$a]['oldsetting2'];
}
}
update_option( 'widget_name', $widget );
}
मेरे अधिकांश परीक्षणों में यह ठीक काम करता है, लेकिन समस्या यह हो जाती है कि पुराना विजेट अब इसे प्रदर्शित नहीं करता है। केवल विजेट का शीर्षक दिखाएगा। मैं प्रत्येक व्यक्तिगत विजेट को जाने और सहेजने के द्वारा इसे ठीक कर सकता हूं और फिर यह ठीक काम करेगा, लेकिन मैं अपने उपयोगकर्ताओं को ऐसा नहीं करना चाहता।
मैंने सोचा कि यह कुछ इस तरह काम कर सकता है:
$settings = $widgets->get_settings();
foreach( $settings as $s ) {
$s['setting1'] = $s['oldsetting1'];
$s['setting2'] = $s['oldsetting2'];
$widgets->save_settings( $s );
}
लेकिन ऐसा लगता है कि save_settings()
कॉल गलत होना चाहिए क्योंकि यह विजेट को पूरी तरह से हटा देता है।
मुझे इस तरह की चीज़ों के लिए किसी भी प्रकार के मानक को खोजने में परेशानी हो रही है और आप किसी भी विचार, विचार, या लिंक को सुनना पसंद करेंगे, आपको ऐसा कुछ करना होगा।
किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।
संपादित करें:
यह वास्तव में लाइसेंस कुंजी को ट्रैक करने या WP रेपो पर होस्ट नहीं किए गए प्लगइन्स को अपग्रेड करने के बारे में सवाल नहीं है। जब उपयोगकर्ता नवीनीकरण होता है, तो प्लगइन के 2 संस्करण के बीच सेटिंग अपडेट हो रही है।
उदाहरण:
संस्करण 1.0.0 में एक सेटिंग फ़ील्ड है name
अच्छी तरह से संस्करण 1.1.0 में हम तय करते हैं कि हमें पहले और अंतिम नाम दोनों की आवश्यकता है ताकि हम पुरानी सेटिंग को बदल दें first_name
और फिर एक नई सेटिंग जोड़ें last_name
।
कस्टम पोस्ट प्रकार के लिए पोस्ट मेटा के रूप में सहेजे जाने पर इन विकल्पों को स्थानांतरित करना कोई समस्या नहीं है:
$old_name = get_post_meta( $post->ID, 'name', true );
$first_name = update_post_meta ( $post->ID, 'first_name', true );
delete_post_meta( $post->ID, 'name' );
तो वह हिस्सा आसान है। मुझे जो परेशानी हो रही है उससे लगता है कि यह आसान नहीं है लेकिन यह वही काम कर रहा है लेकिन WIDGET सेटिंग्स के लिए।
उम्मीद है कि यह किसी भी भ्रम को दूर करेगा और इसका जवाब देने में आसान बनाने में मदद करेगा।
संपादित करें 2:
echo '<pre>' . print_r( $widget, true ) . '</pre>';
उपरोक्त प्रथम कोड से परिणाम :
Array
(
[2] => Array
(
[title] => Class Schedule
[id] => 23
[display_type] => grid
[order] => asc
[display_title_text] => Events on
[paging] => 1
[list_max_num] => 7
[list_max_length] => days
[list_start_offset_num] => 0
[list_start_offset_direction] => back
[gce_per_page_num] => 7
[gce_events_per_page] => days
)
[3] => Array
(
[title] => Examples
[id] => 24
[display_type] => grid
[order] => asc
[display_title_text] => Events on
[paging] => 1
[list_max_num] => 7
[list_max_length] => days
[list_start_offset_num] => 0
[list_start_offset_direction] => back
[gce_per_page_num] => 7
[gce_events_per_page] => days
)
[_multiwidget] => 1
)