A-fshin

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

3 پست در این موضوع قرار دارد

درود.من اومدم ابتدا آپشن 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);
}

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

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

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری