رفتن به مطلب

ساخت پنل تنظیم پیشرفته برای افزونه


sajad

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

سلام 

یه جدول تو وردپرس طراحی کردم که شامل یه سری سطر و ستون هست. دارم یه پنل تنظیم درست میکنم که ادمین سایت بتونه متن های این جدول رو از پیشخوان بتونه تغییر بده و وارد کد نشه. ابهامی که برام وجود داره این هست که مثلا الان من 5 تا سطر دارم که و جدول داره نشون میده و ادمین میتونه عبارت ها رو پاک کنه و یا تغییر بده.

سوال اینجا پیش میاد چطوری امکانی رو تو همین پنل تنظیم ایجاد کنم که کاربر بتونه هر تعداد ردیف دیگه ای که قصد داره رو به این جدول اضافه کنه.

مثلا تعداد 5 تا رو بکنه 10 تا سطر یا 7 تا و ...

 

 

 

لینک به ارسال
در 46 دقیقه قبل، lord_viper گفته است :

سوال شما کمی گنگ هست بیشتر توضیح بدین

خب بزارید اینطوری با یه مثال توضیح بدم:

فرض کنیم یه همچین جدولی تو سایت داریم که یه سری اطلاعات داخل هر سطر و یا ستون نوشته شده:

5e63478a82102c7a25a945321637323f--wire-art-chainmaille.jpg.3b85dfc56f65c33a1bf8b83f5b585c41.jpg

الان تو این جدول 10 تا سطر داریم.

حالا اگه بخوایم یه سطر داده دیگه به این جدول اضافه کنیم و یا دو تا سطر از اطلاعات این جدول رو پاک کنیم چطوری باید اینکار رو انجام بدیم؟

ساده ترین روشش اینه که بریم تو کدها جدول و این تغییرات رو انجام بدیم. ولی من قصد داریم امکان حذف/ویرایش و اضافه کردن اطلاعات به این جدول رو از طریق یه پنل تنظیمات ساده ای که تو داشبورد وردپرس ایجاد میکنم امکان پذیر کنم.

مثلا تو پنل تنظیمات دکمه ای باشه به اسم افزودن سطر که روی اون کلیک شد اطلاعات سطر جدید رو بگیره و به انتهای جدول اضافه کنه.

ببخشید هر چی گشتم نمونه افزونه ای پیدا نکردم که بتونم معرفی کنم و واضح تر منظورم رو برسونم.

اگه متوجه نشدید بگید تا بیشتر توضیح بدم.

 

لینک به ارسال

سلام. بعضی از پنل های تنظیمات یه نوع فیلد دارن به اسم repeater field . که با اون میتونید فیلدهای تکرار شونده بسازید. یعنی کاربر دکمه اد رو که میزنه یه سطر جدید از فیلدها اضافه می شه. مثلا برای داشتن همچین قابلیتی میتونید از carbon fields استفاده کنید که هم سبکه و هم کاملا رایگانه.

البته پنل Redux هم این قابلیت رو داره اما رایگان نیست این قابلیتش.

لینک به ارسال
در 10 دقیقه قبل، فرحان گفته است :

سلام. بعضی از پنل های تنظیمات یه نوع فیلد دارن به اسم repeater field . که با اون میتونید فیلدهای تکرار شونده بسازید. یعنی کاربر دکمه اد رو که میزنه یه سطر جدید از فیلدها اضافه می شه. مثلا برای داشتن همچین قابلیتی میتونید از carbon fields استفاده کنید که هم سبکه و هم کاملا رایگانه.

البته پنل Redux هم این قابلیت رو داره اما رایگان نیست این قابلیتش.

ممنون فرحان جان

یه سرچی کردم carbon-fields ظاهرا یه افزونه اس. من نمیخوام با افزونه اینکار رو انجام بدم.

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

الان مثلا 5 تا سطر تو جدولم دارم 5 تا input تو تنظیمات در نظر گرفتم که فقط میشه نوشته های هر سطر رو تغییر داد. نمیشه سطری رو حذف و یا اضافه کرد.

به دنبال توضیح و مثال یا شبه کد هستم.

لینک به ارسال

کربن فیلد رو میتونید بزاری توی پروژتون.

از اونجایی که این کار چندین بخش داره فک نکنم یه قطعه کد بتونه کارتون رو راه بندازه چون هم مراحل ذخیره هست، هم کدهای جاوااسکریپت و هم کد UI .

اگر از پنل سازی چیزی استفاده کردین ببینید شاید همچین ماژولی داشته باشه. تاجایی که میدونم ACF هم همین قابلیت رو داره و هم ACF و هم کربن فیلد رو میتونید توی پروژتون اینکلود کنید. اما کربن فیلد سبک تره.

لینک به ارسال
در 3 ساعت قبل، m4xs051 گفته است :

ممنون فرحان جان

یه سرچی کردم carbon-fields ظاهرا یه افزونه اس. من نمیخوام با افزونه اینکار رو انجام بدم.

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

الان مثلا 5 تا سطر تو جدولم دارم 5 تا input تو تنظیمات در نظر گرفتم که فقط میشه نوشته های هر سطر رو تغییر داد. نمیشه سطری رو حذف و یا اضافه کرد.

به دنبال توضیح و مثال یا شبه کد هستم.

سلام و درود

 

یه نمونه برات درست کردم.

https://jsfiddle.net/7fqygc7f/

فقط باید توجه کنی بعد Submit اگر مثلا نام فیلد ها field باشه همین طور که توی مثال هست field یه آرایه است.

$_POST['field']

متغییر بالا میشه آرایه.

 

موفق باشید

لینک به ارسال
در 5 ساعت قبل، mehran-b گفته است :

سلام و درود

 

یه نمونه برات درست کردم.

https://jsfiddle.net/7fqygc7f/

فقط باید توجه کنی بعد Submit اگر مثلا نام فیلد ها field باشه همین طور که توی مثال هست field یه آرایه است.


$_POST['field']

متغییر بالا میشه آرایه.

 

موفق باشید

ممنون مهران جان

خیلی مفید و کارراه انداز بود.

مثالی که آماده کرده بودی رو من به این شکل در آوردم.

Screenshot.png.5df3b4f06401f6fe84b112f504c5b32b.png

 

دو تا سوال دارم:

1- چطور اطلاعات هر سطری که اضافه میکنم رو تو options.php رجیستر کنم؟

2- چطور این اطلاعات ثبت شده در options.php رو بخونم و مورد استفاده قرار بدم؟

 

 

لینک به ارسال
در 7 دقیقه قبل، m4xs051 گفته است :

دو تا سوال دارم:

1- چطور اطلاعات هر سطری که اضافه میکنم رو تو options.php رجیستر کنم؟

2- چطور این اطلاعات ثبت شده در options.php رو بخونم و مورد استفاده قرار بدم؟

خوب اینجا دیگه نمیخواد register_setting کنی بیا action رو خالی بذار هیچی نده وقتی هیچی ندی سابمیتش به همون صفحه جاری میره.

بعد بیا چک کن توی کدهات ست شده کلید فیلدها یا نه.

if(isset($_POST['field']))
	my_plugin_update_option();

حالا بعد توی بدنه تابع my_plugin_update_option میای داده های توی کلید field رو چک میکنی و با add_option خودت اضافش میکنی به وردپرس دیگه مثل register_setting ثبت کردن رو به وردپرس نمیسپاری.

لینک به ارسال
در 5 دقیقه قبل، mehran-b گفته است :

خوب اینجا دیگه نمیخواد register_setting کنی بیا action رو خالی بذار هیچی نده وقتی هیچی ندی سابمیتش به همون صفحه جاری میره.

بعد بیا چک کن توی کدهات ست شده کلید فیلدها یا نه.


if(isset($_POST['field']))
	my_plugin_update_option();

حالا بعد توی بدنه تابع my_plugin_update_option میای داده های توی کلید field رو چک میکنی و با add_option خودت اضافش میکنی به وردپرس دیگه مثل register_setting ثبت کردن رو به وردپرس نمیسپاری.

نکته اول: این جدول و پنل تنظیم پلاگین نیست و کدها داره تو فایل فانکشن قالب اضافه میشه.

نکته دوم: تو فرانت سایت چطوری این مقادیر رو باید بخونم. قبلا که ثبت اطلاعات رو با وردپرس انجام میدادم توسط get_option دیتا هایی که ست شده بود رو میخوندم و تو فرانت سایت نمایش میدادم ولی حالا ظاهرا این روش دیگه جواب گو نیست درسته؟

لینک به ارسال
در 5 دقیقه قبل، m4xs051 گفته است :

نکته اول: این جدول و پنل تنظیم پلاگین نیست و کدها داره تو فایل فانکشن قالب اضافه میشه.

نکته دوم: تو فرانت سایت چطوری این مقادیر رو باید بخونم. قبلا که ثبت اطلاعات رو با وردپرس انجام میدادم توسط get_option دیتا هایی که ست شده بود رو میخوندم و تو فرانت سایت نمایش میدادم ولی حالا ظاهرا این روش دیگه جواب گو نیست درسته؟

  1. فانکشن قالب هم مثل یه پلاگین میمونه مشکلی نداره.
  2. با همون get_option
لینک به ارسال
در 4 دقیقه قبل، mehran-b گفته است :
  1. فانکشن قالب هم مثل یه پلاگین میمونه مشکلی نداره.
  2. با همون get_option

خیلی ممنون.

طبق راهنمایی که کردی مهران جان انجام میدم نتیجه اش رو اعلام میکنم.

لینک به ارسال

@mehran-b

یک سوال: ممکنه یه سطر اضافه بشه و سه تا چک باکس و یا همه چک باکس ها براش خورده بشه. و ممکن هم هست که فقط یکی از این چک باکس ها تیک دار بشه.

سوالی که پیش میاد اینه که چطوری چک کنم از این 4 تا چک باکس کدوم تیک دار شده یا نه.

این کد نوشتم ولی فکر میکنم مشکل داره:

if(isset($_POST['field'] && $_POST['planone'] || $_POST['plantwo'] || $_POST['planthree'] || $_POST['planfour'] )){
    price_table_update_option();
}

این هم کد html هست که بر این اساس سایر سطرها با این الگو درست میشن:

<div class="field"><span>سطر:[0]</span>
        <input name="filed[0]">
        <label for="planone[0]">پلن یک ماهه</label>
        <input name="planone[0]" id="planone[0]" type="checkbox">
        <label for="plantwo[0]">پلن سه ماه</label>
        <input name="plantwo[0]" id="plantwo[0]" type="checkbox">
        <label for="planthree[0]">پلن شش ماهه</label>
        <input name="planthree[0]" id="planthree[0]" type="checkbox">
        <label for="planfour[0]">پلن یک ساله</label>
        <input name="planfour[0]" id="planfour[0]" type="checkbox">
        <span class="add">افزودن</span>
</div>

 

لینک به ارسال

حرکتت اشتباهه باید کلا روی یه کلید مانور بدی.

در اصل باید آرایه رو دو بعدی کنی.

<div class="field"><span>سطر:[0]</span>
        <input name="filed[0][text]">
        <label for="filed[0][1m]">پلن یک ماهه</label>
        <input name="filed[0][1m]" id="filed[0][1m]" type="checkbox">
        <label for="filed[0][3m]">پلن سه ماه</label>
        <input name="filed[0][3m]" id="filed[0][3m]" type="checkbox">
        <label for="filed[0][6m]">پلن شش ماهه</label>
        <input name="filed[0][6m]" id="filed[0][6m]" type="checkbox">
        <label for="filed[0][12m]">پلن یک ساله</label>
        <input name="filed[0][12m]" id="filed[0][12m]" type="checkbox">
        <span class="add">افزودن</span>
</div>

 

لینک به ارسال

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

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

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

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

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

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

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

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

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