mohsen29 37 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 (ویرایش شده) سلام.در حال نوشتن پنل تنظیماتی هستم با register_setting آپشن رو ساختم و مقادیر به خوبی در فرم ساخته شده ذخیره می شن.می خوام یک بخش ریست و پاک کردن کل تنظیمات رو بسازیم چه تابعی نیاز داره؟؟؟ با delete_option باید انجام بشه ؟؟ چون از update_option استفاده نشده.و یک مورد دیگه اینکه توایع زیر کاربرد اصلیشون چیه و استفاده نکردن ازشون مشکلی پیش میاره؟؟با تشکر. esc_html( ) .esc_attr ().esc_htmlو... ویرایش شده آذر 94 توسط Arash28 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 دوستان راهنمایی می کنید نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 تابعش unregister_settingاست ولیبرای ریست کردن بهتره مقادیر دیفالت به فیلدها بدید تا حذفشون کنید esc_html یعنی در نظر نگرفتن تگهای html (خروجی text only)esc_attr یعنی حذف موارد مزام در attr مانند " یا ' و همینطور تگهای html اگه منظورتون از سه نقطه آخر تعریف تمام توابع وردپرسه که جزو وظایف پشتیبانی نیست 2 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 با تشکر از راهنمایی شما . منظور از 3 نقطه توابع مشابه مثل موارد زیر بود :esc_urlesc_textareaمن یک آپلودر هم به این صورت اضافه کردم.اما می خوام بعد از اینکه آپلود انجام شد و مقدار آدرس در اینپوت قرار گرفت بلافاصله یک پینمایش هم نشون بده مثل بقیه ی پنل تنظیمات ها . نمی دونم باید چیکار کنممن به این صورت طبق آموزش ها انجام دادم :case "u":?><input id="<?php echo $set['id']; ?>" class="img-path" type="text" name="mysetting[<?php echo $set['id']; ?>]" value="<?php echo $val ?>" /><a id="upload_<?php echo $set['id']; ?>_button" class="button upimg" >آپلود</a><div id="<?php echo $set['id']; ?>-preview" class="img-preview" ><img src="<?php echo $set['id']?>"></div><script type='text/javascript'>set_uploader( '<?php echo $set['id']; ?>' );</script><?phpbreak;function set_uploader(field ) {var _bg_uploader;jQuery(document).on("click", "#upload_"+field+"_button" , function( event ){event.preventDefault();_bg_uploader = wp.media.frames._bg_uploader = wp.media({title: 'عکس ها',library: {type: 'image'},button: {text: 'انتخاب'},multiple: false});_bg_uploader.on( 'select', function() {var selection = _bg_uploader.state().get('selection');selection.map( function( attachment ) {attachment = attachment.toJSON();jQuery('#'+field).val(attachment.url);jQuery('#'+field+'-preview').slideDown(800);jQuery('#'+field+'-preview img').attr("src", attachment.url );});});_bg_uploader.open();});}و یک مورد دیگه اینکه من تابع settings_fields که طبق آموزش ها گفته شده بعد از form گذاشته بشه رو قرار دادم و موارد زیر رو خودکار اضافه کرده آیا امنیت فرم با این تابع برقرار می شه یا باید توابع nonce براش بسازم؟؟ نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 فکر نکنم اون دو مورد دیگه نیاز به تعریف داشته باشندخط img کدتون رو به این صورت تغییر بدید که ارور برنگردونه if(!empty($set['id']))$src = $set['id'];else$src = bloginfo('template_directory').'/images/default.png';echo '<img id=" src="'.$src.'">';برای پیش نمایش هم که کدش رو دارید دیگهتابع nonce نباید بسازید اون فیلدها درستند و مشکلی ندارند 1 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 ممنون از شما.پیشنمایش کار نمی کنه و بلافاصله نشون نمی ده فکر کنم باید تو case تعریف شده تو کد زیر یک مورد اضافه بشه :<script type='text/javascript'>set_uploader( '<?php echo $set['id']; ?>' );</script> نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 اینکه چرا آی دی ها را با <?php echo $set['id'];?>ساختید و چرا نشانی تصویر رو هم همین مقدار گذاشتید رو من نمی دونم قاعدتا خودتون توجیهش رو می دونیدمقداری که $set['id']; برمی گردونه اگر نشانی تصویر باشه که روش کد نویسیتون کلا اشتباهه و نباید نشانی تصویر را به عنوان آی دی عناصر قرار بدیدبفرمایید این $set['id'];چیه و چرا تو کدتون هست و چی رو بر می گردونه تا عرض کنم نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 (ویرایش شده) یک تابع نوشتم برای switch case ها به این صورت :function add_my_field( $set ){//**$my_option = get_option("my_options")if(!empty($my_option)){$val = $my_option;}//**case "u":?><input id="<?php echo $set['id']; ?>" class="img-path" type="text" name="mysetting[<?php echo $set['id']; ?>]" value="<?php echo $val ?>" /><a id="upload_<?php echo $set['id']; ?>_button" class="button upimg" >آپلود</a><div id="<?php echo $set['id']; ?>-preview" class="img-preview" ><img src="<?php echo $val;?>"></div><script type='text/javascript'>set_uploader( '<?php echo $set['id']; ?>' );</script><?phpbreak;}و به این صورت هم آپشن ها رو در پنل تنظیمات تعریف می کنم :add_my_field = (array("name" => "آپلود","id" => "ads_img","type" => "u",));$val در دستور اول تعریف شده که آپشن رو برگدونه و $set هم id آپشن رو بر می گردونه ویرایش شده آذر 94 توسط Arash28 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 آی دی آپشن رو بر می گردونه؟ رو چه حسابیش رو من متوجه نشدم بماند در کل هم نیازی بهش نمی بینم این تابع هم جایی کاربرد داره که بخواهید به صورت داینامیک فیلدها رو بسازید توی پنل تنظیمات که قرار نیست فیلد داینامیک نوشته بشه لزومی هم به چرخوندن لقمه به این شکل نیست در هر حال پس <img src="<?php echo $set['id']?>">باید بشه <img src="<?php echo $val;?>">و شروع کننده آی دی عناصر هم باید حروف لاتین باشه یعنی id="div-<?php echo $set['id']; ?>-preview"دقت کنید این دو خط هم تغییر می کنند jQuery('#'+field+'-preview').slideDown(800);jQuery('#'+field+'-preview img').attr("src", attachment.url ); 1 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 مشکل حل شد.منظور از set['id] همون id هست که در کد زیر به کار رفته . مگه آی دی آپشن نمیشه؟ ( "id" => "ads_img" )add_my_field = (array("name" => "آپلود","id" => "ads_img","type" => "u",));و یک مورد دیگه همون ریست کردن هست چطوری می تونم به جای اینکه به تک تک فیلدها یک مقدار دیفالت بدم یه مورد کلی در نظر بگیرم و وقتی هم ریست خواستم بکنم همون رو در نظر بگیره؟؟ نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 مگه مجموعا چند تا فیلد دارید؟ به نظر خودتون مقدار گذاری فیلدهاتون وقت گیر تره یا پاسخ دادن به سئوالاتون راه داره ولی استفاده از کوئری فقط برای وقتی لازمه که نتونید به صورنت ایستا مقدار گذاری کنید این مورد در مورد آی دی هم صدق می کنه هر کوئری یک سئوال و جواب با دیتابیس ایجاد می کنه و به اندازه ی یکبار رفت و برگشت اطلاعات ترافیک اشغال می کنه و به منابع سرورتون فشار می آره یک برنامه نویس خوب باید کمترین فشار رو به منابع بیاره نه کمترین فشار رو به خودش! نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 فیلدها متغیر هستند شاید 10 تا شاید 20 تا بخوام استفاده کنم به خاطر همین باید چه دستوری به کار بره که خودکار آی دی ها رو بفهمه و یک مقدار خالی جایگزینش کنه : مثلا به صورت زیر بخوام بنویسم نمی دونم باید چیکار کنم :if ( isset( $_POST['reset'] ) ) {return get_default_values();}function get_default_values() {؟؟؟} نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 پنل تنظیمات رو اینجوری نباید بسازید مسیر کارتون اشتباهه پنل تنظیمات یک قالب که نمی شه فیلدهاش متغیر باشه ممکنه برای یک قالب ده تا باشه برای یک قالب بیست تا خوب پنل دو تا قالب را باید جداگانه بنویسید مسیرتون اشتباهه و راهنمایی کردن به کار اشتباه دیگران رو هم ممکنه به اشتباه بندازه نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 مثلا همون آپلود عکس که فیلدش رو ساختم مثلا بیام به صورت زیر id رو مقدارش رو خالی بذارم :if ( isset( $_POST['reset'] ) ) {$def = array("ads_img" => "";"logo_img" => "";);باید چه تابعی به کار ببرم که مقدار خالی بعد از کلیک در دکمه ی ریست جایگزین مقادیر قبلی بشه؟؟}باید از add_filter استفاده بشه؟؟پنل تنظیمات با update_option و delete_option راحت تره انگار تا با register_setting نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 رجیستر ستینگ که راه جداگانه ای نیست این تابع می آد تابع آپدیت آپشنز رو تو خودش می سازه و اینکه با آپدیت ستینگ هم کار کنید همون اتفاق در نتیجه می افته یعنی یگ آپشن ساخته می شه که مابقی مقادیر می شند آرایه ی متغیرهاش اگر هدفتون ساختن یک پنل تنظیمات حرفه ایه:اولین چیزی که باید بدونید اینه که یک برنامه هرچقدر بهتر باشه مفهومش اینه که برنامه نویسش وقت بیشتری روش گذاشته پس دنبال میانبر زدن بخشی که به عهده برنامه نویسه نباید باشید دوم اینکه کارتون رو باید قبل از شروع کاملا آنالیز کنید و اسکلتبندیش رو ترسیم کنید بعد هم بهتره اول کل کار را یکبار بصورت html بسازید و فرمتون رو به صورت عادی چک کنید و مطئن بشید تمام مقادیر رو درست ارسال می کنه بعد در نهایت فرم ساخته شده رو می تونید با ریجستری ستینگ یا اد آپشن به بخش مدیریت وردپرس متصل کنید نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 (ویرایش شده) یک آموزش من یکجا دیدم که رایگان هم هست در لینک زیر :http://code.tutsplus.com/articles/how-to-create-a-better-wordpress-options-panel--net-9360توی این آموزش هر آپشن در صفحه ی test.com/wp-admin/options.php با اسم و آیدی مخصوص خودش ساخته و ذخیره میشه اما با اون register_setting طبق تصویر زیر serialized ذخیر میشه :این مورد به خاطر امنیت هست؟؟ آموزش بالا رو میشه به این صورت درآورد ؟ ویرایش شده آذر 94 توسط Arash28 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 ربطی به امنیت نداره فقط دیتابیس رو روانتر می کنه و فرقی هم نداره هر دو می شه به هر دو شکل ذخیره کرد 1 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 (ویرایش شده) تو همون آموزش بالا هر آپشن جداگانه با آی دی ها مخصوصشون ذخیره میشن چطور میشه همه رو مثل register_setting در یک نام معین شده ریخت و ذخیره کرد تا تعداد option_name ها در جدول wp_option کم باشه؟ ویرایش شده آذر 94 توسط Arash28 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در آذر 94 گزارش بازنشر ارسال شده در آذر 94 من اون آموزش رو نمی دونم چیه وقت خوندنش رو هم ندارم شما می تونید یک آپشن بسازید مثلا به نام my_themes_options<?php$options = get_option('my_themes_options');?><input id="logo" name="my_themes_options[logo]" value="<?php echo $options['logo'];?>"><input id="background-color" name="my_themes_options[bgc]" value="<?php echo $options['bgc'];?>">الی آخر 1 نقل قول لینک به ارسال
mohsen29 37 ارسال شده در آذر 94 مالک گزارش بازنشر ارسال شده در آذر 94 ممنون از راهنمایی های شماچطور می تونم به صورت آجاکس تنظیمات رو ذخیره کنم در این مورد راهنمایی می کنید؟ نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .