m4xs051

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

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

سلام 

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

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

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

 

 

 

0

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


لینک به پست

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

1

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


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

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

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

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

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

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

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

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

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

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

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

 

0

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


لینک به پست

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

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

1

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


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

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

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

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

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

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

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

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

0

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


لینک به پست

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

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

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

1

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


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

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

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

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

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

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

سلام و درود

 

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

https://jsfiddle.net/7fqygc7f/

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

$_POST['field']

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

 

موفق باشید

2

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


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

سلام و درود

 

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

https://jsfiddle.net/7fqygc7f/

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


$_POST['field']

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

 

موفق باشید

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

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

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

Screenshot.png.5df3b4f06401f6fe84b112f504c5b32b.png

 

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

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

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

 

 

0

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


لینک به پست
در 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 ثبت کردن رو به وردپرس نمیسپاری.

1

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


لینک به پست
در 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 دیتا هایی که ست شده بود رو میخوندم و تو فرانت سایت نمایش میدادم ولی حالا ظاهرا این روش دیگه جواب گو نیست درسته؟

0

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


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

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

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

  1. فانکشن قالب هم مثل یه پلاگین میمونه مشکلی نداره.
  2. با همون get_option
1

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


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

خیلی ممنون.

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

0

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


لینک به پست

@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>

 

0

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


لینک به پست

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

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

<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>

 

1

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


لینک به پست

راحت ترین راهش اینه که شما از Option Tree  استفاده کنید

0

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


لینک به پست

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

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

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

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


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

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

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


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