মাল্টি-ডাইমেনশনাল অ্যারেতে স্টোরড আপডেট অপশন


15

আমার wp_optionsবর্তমানে টেবিলটিতে একটি বহুমাত্রিক অ্যারে ( profile_element_order) হিসাবে সঞ্চিত ডেটা রয়েছে :

a:12:{s:17:"img_base64_enable";s:1:"1";s:25:"moulding_combination_page";s:0:"";s:24:"moulding_collection_page";s:0:"";s:25:"idea_gallery_thumb_height";s:3:"200";s:24:"idea_gallery_thumb_width";s:3:"200";s:23:"collection_thumb_height";s:3:"200";s:22:"collection_thumb_width";s:3:"200";s:20:"profile_item_columns";s:1:"4";s:17:"idea_item_columns";s:1:"2";s:24:"collections_item_columns";s:1:"2";s:25:"combinations_item_columns";s:1:"4";s:21:"profile_element_order";a:5:{i:0;s:8:"Option 1";i:1;s:8:"Option 2";i:2;s:8:"Option 3";i:3;s:8:"Option 4";i:4;s:8:"Option 5";}}

আমি যেটি সম্পাদন করার চেষ্টা করছি তা হ'ল profile_element_orderবিকল্পটি আপডেট করুন (সেই বিকল্পগুলির মধ্যে)। এতদূর পর্যন্ত সবকিছু কীভাবে দেখায় তা এখানে:

function psort_save_order() {

    global $mouldings_options;

    $list = $mouldings_options['profile_element_order'];
    $new_order = $_POST['list_items'];
    $new_list = array();

    // update order
    foreach($new_order as $v) {
        if(isset($list[$v])) {
            $new_list[$v] = $list[$v];
        }
    }

    // save the new order
    update_option('profile_element_order', $new_list);

    die();
}
add_action('wp_ajax_psort_update_order', 'psort_save_order');

ডেবিটি সঠিকভাবে ডিবি টেবিলে পোস্ট করছে (যেমন আমি আমার কিছু ব্যর্থ প্রচেষ্টা নতুন বিকল্প এন্ট্রি হিসাবে দেখতে পাচ্ছি mouldings_settings->profile_element_order) যেমন - update_option()কেবলমাত্র সেই নির্দিষ্ট বিকল্পটির বাক্য গঠন নির্ণয় করতে আমার খুব কষ্ট হচ্ছে । আমি এই জাতীয় জিনিসগুলি চেষ্টা করেছি (মনে রাখবেন `মোডিংস_সেটিংগুলি আসল বিকল্পের নাম):

mouldings_settings['profile_element_order']
$mouldings_options['profile_element_order']
profile_element_order

কিন্তু এই মুহুর্তে কোন পাশা নেই। যে কোনও পয়েন্টার প্রশংসিত হবে! ধন্যবাদ!

আপডেট আমার কাছে এখনই এটি রয়েছে - এজাক্স অ্যাকশনটি ভাল সাশ্রয় করে তবে আমি যখন প্লাগইন অপশনগুলি সংরক্ষণ করি এটি ডাটাবেসে অপশনগুলি সদৃশ করে এবং আগের মতো একই ত্রুটিটি ছুঁড়ে দেয়:

a:17:{s:17:"img_base64_enable";s:1:"1";s:25:"moulding_combination_page";s:0:"";s:24:"moulding_collection_page";s:0:"";s:25:"idea_gallery_thumb_height";s:3:"200";s:24:"idea_gallery_thumb_width";s:3:"200";s:23:"collection_thumb_height";s:3:"200";s:22:"collection_thumb_width";s:3:"200";s:20:"profile_item_columns";s:1:"4";s:17:"idea_item_columns";s:1:"2";s:24:"collections_item_columns";s:1:"2";s:25:"combinations_item_columns";s:1:"4";s:21:"profile_element_order";a:5:{i:4;s:8:"Option 5";i:0;s:8:"Option 1";i:1;s:8:"Option 2";i:3;s:8:"Option 4";i:2;s:8:"Option 3";}i:0;s:8:"Option 5";i:1;s:8:"Option 1";i:2;s:8:"Option 2";i:3;s:8:"Option 4";i:4;s:8:"Option 3";}

ফাংশন:

function psort_save_order() {

    global $mouldings_options;

    $list = $mouldings_options['profile_element_order'];
    $new_order = $_POST['list_items'];
    $new_list = array();

    // update order
    foreach($new_order as $v) {
        if(isset($list[$v])) {
            $new_list[$v] = $list[$v];
        }
    }

    $mouldings_options['profile_element_order'] = $new_list;
    $mouldings_options = array_merge($mouldings_options,$mouldings_options['profile_element_order']);

    // save the new order
    update_option('mouldings_settings', $mouldings_options);

    die();
}
add_action('wp_ajax_psort_update_order', 'psort_save_order');

উত্তর:


36

যতদূর ওয়ার্ডপ্রেস সম্পর্কিত - আপনার বহু-মাত্রিক অ্যারে একটি বিকল্প।

সম্পূর্ণ মাত্রাকে পুনরুদ্ধার করার জন্য প্রয়োজনীয় বহুমাত্রিক অ্যারের কেবলমাত্র কিছু অংশ আপডেট করতে, সে অনুযায়ী এটি পরিবর্তন করুন এবং তারপরে সম্পূর্ণ অ্যারে আপডেট করুন।

মনে করুন আপনার বহুমাত্রিক অ্যারেটি নিম্নরূপ:

my_options = array(
  'option_a'=>'value_a',
  'option_b'=>'value_b',
  'inner_array'=>array(
       'foo' => 'bar',
       'hello' => 'world',
   ),
  'option_c'=>'value_c'
)

এবং ধরুন আপনি 'বিশ্ব' থেকে 'চাঁদে' 'হ্যালো' বিকল্পটির মান আপডেট করতে চান

//Get entire array
$my_options = get_option('my_options');

//Alter the options array appropriately
$my_options['inner_array']['hello'] = 'moon';

//Update entire array
update_option('my_options', $my_options);

1
হাই স্টিভেন - আমার এখনের যা আছে তা দিয়ে আমি আমার আসল প্রশ্নটি আপডেট করেছি এবং এটি অ্যাজাক্সের সাথে কাজ করার সময় (আমি রিফ্রেশ করার সময় অবস্থানটি সংরক্ষণ করে) একবার প্লাগইন সেটিংস সংরক্ষণ করে রিফ্রেশ করি, ডিবি টেবিলের অপশনগুলি কিছুটা অগোছালো হয়ে যায় ( সদৃশ দেখাচ্ছে) যা একটি ত্রুটি নিক্ষেপ করছে - আমি কি এখনও সেই ভুলের কাছে পৌঁছেছি? ধন্যবাদ।
জ্যাচ

আপনি কি বলছেন যে সারিটি নিজেই নকল হয়ে গেছে? অথবা আপনার বিকল্পগুলি সারিটির ভিতরে নকল হয়ে গেছে? বিকল্পটি মুছে ফেলার চেষ্টা করুন এবং আবার চেষ্টা করুন - এটি এমন হতে পারে যে আপনি কেবল আগের চেষ্টাগুলি থেকে সদৃশ রাখছেন।
স্টিফেন হ্যারিস

হাই স্টিফেন - সমস্যাটি পুনরুত্পাদন করতে আমার পদক্ষেপগুলির একটি পেস্টবিন তৈরি করেছেন: পেস্টবিন.com/ওয়াইএইচজি 1 আই 7 এইচআর ধন্যবাদ!
জাচ

আপনার অপসারণ করার চেষ্টা করুন array_merge। এটি সদৃশ ঘটায়। আপনি একটি সাব-অ্যারে দিয়ে একটি অ্যারে মার্জ করছেন (সাব-অ্যারেটি সদৃশ হয়ে গেছে)।
স্টিফেন হ্যারিস

হাই স্টিফেন - আমি অনুমান করি যে এটি কীভাবে লিখতে হবে তা সম্পর্কে আমি $mouldings_options['profile_element_order'] = $new_list;update_option('mouldings_settings', mouldings_options);এখনও অনিশ্চিত - আমার কাছে এখনই রয়েছে যার সদৃশতা নেই (এবং ডিবিতে সঠিকভাবে লিখেছে যা ভাল) - তবে পৃষ্ঠা-সেভে (প্লাগইন সেটিংস সংরক্ষণ করুন) , প্লাগইন সেটিংসটি ডাটাবেস থেকে এখনও সরানো হয়েছে (সেই পেস্টবিনের শেষ অংশ হিসাবে)।
জাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.