رفتن به مطلب

مشکل در importer پنل تنظیمات


پست های پیشنهاد شده

درود.من اومدم ابتدا آپشن homebuilder رو از بقیه ی آپشن ها جداکردم.


$pasargad_array_options = array(
'pasargad_options',
'pasargad_boxs'
);

pasargad_options برای آرایه های مختلف تعریف شده و pasargad_boxs هم برای homebuilder پوسته و باکس های drag&drop.

کاری که می خوام انجام بدم امکان تهیه نسخه ی پشتیبان از پنل تنظیمات و امکان بازگردانی آن است.

توسط کد زیر آرایه ها رو که در پنل کاربر ذخیره و تنطیم می کنه encode می کنم


<?php
$encode = base64_encode(serialize(get_option( 'pasargad_options' )));
?>

و در یک textarea نمایش می دم و کاربر می تونه اون رو کپی و بعدها می تونه بازگردانی کنه.اما کد بالا homebuilder رو مقادیرش رو encode نمی کنه باید کد زیر رو برای در ادامه ی کد بالا قرار بدم ( کارم اشتباهه چون اینبار فقط homebuilder رو می شه encode کرد)

$encode = base64_encode(serialize(get_option( 'pasargad_boxs' )));

در قسمت save و restore کردن نسخه ی پشتیبان برای decode کردن و ذخیره سازی این مقادیر به صورت زیر عمل کردم.


add_action('wp_ajax_pasargad_save_data', 'pasargad_ajax_save_panel');
function pasargad_ajax_save_panel(){
$pasargad_restored = $_POST['pasargad_restore'];
$decode = unserialize(base64_decode($pasargad_restored));
$pasargad_value = array('pasargad_options');
$pasargad_value = array('pasargad_boxs');
$pasargad_value['pasargad_options'] = $decode;
$pasargad_value['pasargad_boxs'] = $decode;
if($pasargad_restored) {
$data = $pasargad_value;
}else{
$data = $_POST;
}
pasargad_save_panel('ajax', $data);
}
function pasargad_save_panel($from, $data){
global $pasargad_array_options;
if ('pasargad_save_data' == $_REQUEST['action']) {
foreach ($pasargad_array_options as $option) {
if( isset( $data[$option] )){
array_walk_recursive( $data[$option] , 'pasargad_clean_options');
update_option($option , $data[$option]);
}else{
delete_option($option);
}
}
} elseif ('pasargad_reset_data' == $_REQUEST['action']) {
foreach ($pasargad_array_options as $option) {
if( isset( $data[$option] )){
array_walk_recursive( $data[$option] , 'pasargad_clean_options');
update_option($option , $data[$option]);
}else{
delete_option($option);
}
}
header("Location: admin.php?page=pasargad-panel&reset=true");
if($from == "direct"){
}
die("reset!");
}
}
function casestudy_icons() {

در کدهای بالا pasargad_options و pasargad_boxs به صورت زیر تعریف شده که decode بشن


$decode = unserialize(base64_decode($pasargad_restored));
$pasargad_value = array('pasargad_options');
$pasargad_value = array('pasargad_boxs');
$pasargad_value['pasargad_options'] = $decode;
$pasargad_value['pasargad_boxs'] = $decode;

الان فقط می تونم تنها یا homebuilder یا باقی تنظیمات رو نسخه ی پشتیبان درست کنم.چیکار کنم هر دوی اونها با هم encode بشن.حتی از کد زیر هم برای encode کردن استفاده کردم اما نشد و دیگه هیچی بازگردانی نمی شه.


<?php
global $pasargad_array_options ;

$encode = array();
foreach( $pasargad_array_options as $option ){
if( get_option( $option ) )
$encode[$option] = get_option( $option ) ;
}
?>

ویرایش شده توسط افشیـــــن
لینک به ارسال

از اساتید کسی نمی تونه کمک کنه؟!

من می خوام pasargad_boxs و pasargad_options رو با هم encode کنم و کاربر کد encode شده رو در یک textarea دیگه با آی دی pasargad_restore اونو بازگردانی کنه

من اومدم به جای کدهای بالا بصورت زیر بخش encode رو تعریف کردم:


<?php
global $pasargad_array_options ;
$ps_options = array();
foreach( $pasargad_array_options as $option ){
if( get_option( $option ) )
$ps_options[$option] = get_option( $option ) ;
}
?>
<?php ?>
<textarea style="width:100%;margin-bottom:10px;" rows="6" type="textarea" cols="" rows=""><?php echo $pssettings = base64_encode( serialize( $ps_options )); ?></textarea>

سپس برای decode کردن هم بصورت زیر در فانکشن پنل تعرف کردم :


add_action('wp_ajax_pasargad_save_data', 'pasargad_ajax_save_panel');
function pasargad_ajax_save_panel(){
if( !empty( $data['pasargad_restore'] ) ){
$data = unserialize(base64_decode( $data['pasargad_restore'] ));
}else{
$data = $_POST;
}
pasargad_save_panel('ajax', $data);
}

باز هم قادر به بازگردانی نیست

ویرایش شده توسط افشیـــــن
لینک به ارسال
  • 2 هفته بعد...

شما اگر میخواهید دو تارو باهم به کاربر بدهید

میتوانید پس از انکد شدن

با کاراکتری خاص برای مثال ||| (3 پایپ) از هم جدا کنید

سپس هنگام بازگردانی براساس کاراکترها explode کنید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...