۷ Mostafa Niakan
استفاده نکردن از add_option
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۳ تیر ۱۴۰۲

سلام وقت بخیر ما add_option استفاده نکردیم برای ذخیره مقدار Input در table option الان چطوری مقدار ما داره تو جدول option ذخیره میشه مقدار Input به کجا پاس داده میشه ؟

با سلام و احترام

بخش setting خود وردپرس با استفاده از متود هایی که تعریف کرده است عملیات ذخیره سازی و اپدیت را انجام میدهید ولی اگر شما پنل تنظیمات سفارشی اضافه کنید باید از add_option و update و .. استفاده کنید.

موفق و سربلند باشید

بهنام مرادی ۲۳ تیر ۱۴۰۲، ۰۹:۴۲

من الان اگه بخوام بگم زمانی تو دیتابیس من ایجاد بشه که input مقدار داشت چطور میتونم ؟

روی چی باید empty بزنم چک کنم؟

Mostafa Niakan ۲۳ تیر ۱۴۰۲، ۱۰:۰۱

سلام

نمی دونم این روش بهینه یا اصولی باشه ولی اگر این کد رو توی همون تابعی که باهاش تنظیمات رو ثبت کردیم بذارید، در صورتی که فیلد خالی باشه اون آپشن رو از جدول پاک می‌کنه.


if(empty($_POST['wa_setting_name'])){
   delete_option('wa_setting_name');
}


آزاده نوری ۱۱ مرداد ۱۴۰۲، ۰۹:۴۵

نمیخواستم یک request اضافه بزنم به دیتابیس

Mostafa Niakan ۱۱ مرداد ۱۴۰۲، ۱۰:۰۰

با سلام مجدد

جناب نیکان لطفا وقتی سوالی را مطرح می‌کنید کامل و با توضیحات کافی ارسال کنید تا بتوان پاسخ مناسب‌تری ارسال کرد.

بفرمایید در حال حاظر نیاز و مشکل شما در بخش تنظیمات خود وردپرس هست یا شما یک پنل تنظیمات سفارشی طراحی کرده اید ؟

بهنام مرادی ۱۲ مرداد ۱۴۰۲، ۰۵:۵۹

ممنون نیاکان هستم

شما زمانی که از register_setting استفاده میکنید میاد مقدار input شمارو توی option ذخیره میکنه درصورتی که برای ذخیره توی table option ما از add_option استفاده میکردیم و اون زمان میگفتیم اگر input ما خالی بود نیاد توی option فیلد خالی بسازه میخوام بدونم الان که ما از add_option برای ذخیره داده Input استفاده نمیکنیم چطور این کار بکنیم که فیلد ساخته نشه دوست ما فرمودند یک request به دیتا بیس بزنیم اگر فیلد خالی بود پاک کن ولی خب این کار فکر نکنم درست باشه یک request اضافه هست

نمیدونم ایا درست تونستم منظور خودمو برسونم یا نه

Mostafa Niakan ۱۲ مرداد ۱۴۰۲، ۰۶:۵۵

بله - جناب نیاکان عزیز

یک موردی رو خدمتتون میگم ذهنیتتون نسبت به کوئری به دیتابیس بازتر بشه:

در همین تاپیک و پاسخ‌های قبلی یکی از دوستان راه حل پاک کردن دیتا در صورت خالی بودن رو با روش delete_option به شما پیشنهاد داد که فرمودید که این روش به نظر بهینه نیست و ریکوست اضافه محسوب میشود -- اما در نظر داشته باشید که بحث ریکوست اضافه به دیتابیس زمانی از اهمیت بالای برخوردار هست که کوئری‌های سنگین‌تری و به دفعات بیشتری اجرا بشه؛ به فرض کوئری گرفتن کامنت‌های یک پست به همراه تعداد لایک و مشخصات کاربر نویسده کامنت در شرایطی که صفحه بیش از هزاران کامنت دارد بسیار مهم هست و شما باید برروی کوچکترین رئکوست‌های ان حساس باشید چون قرار هست علاوه بر جدول post به جدول comments - users - likes و .. همزمان کوئری بزنید و دیتاهای زیادی را دریافت کنید در این حالت باید کوئری بسیار بهینه باشد

شما در حال حاظر برروی درخواستی در حال سخت گیری هست که فقط یک ریکوست ساده حذف ردیف است در حالی که ممکن است ماه‌ها یکبار توسط ادمین اجرا شود! پس سخت نگیرید وگرنه نمیتوانید کدنویسی کنید ( سعی کنید دچار over engineered در کدنویسی نشوید)

اگر با همه این تفاوسیر همچنان تاکید دارید که ریکوست نزنید

از تابع زیر

https://developer.wordpress.org/reference/functions/register_setting/

سورس کد وردپرس ان را بررسی کنید درون ان فیلتر هایی وجود داد که می‌توانید با add filter داده هارا دریافت و تغییرات مد نظرتان را انجام دهید تا از رسیدن ان به فرایند ذخیره سازی جلوگیری کنید.

موفق باشید

بهترین پاسخ
بهنام مرادی ۱۲ مرداد ۱۴۰۲، ۱۴:۲۸