جت انجین و (Advance Custom Field) ACF، دو پلاگین معروف در زمینه ایجاد تغییرات مورد نیاز کاربر در بک اند و موتور وردپرس هستند. این دو پلاگین به کاربر اجازه میدهند تا به راحتی تغییرات مورد نیاز خود را مانند ساخت پستهای سفارشی یا ایجاد صفحاتی مانند تنظیمات پوسته انجام دهند. هر دو پلاگین کابردی و مناسب هستند و نسبت به هم مزیتهایی را دارند. از جمله استفاده از جت انجین با صفحه سازی مانند المنتور بسیار راحت است در حالی که برای استفاده از فیلدهای تنظیم شده در ACF و در المنتور باید از پلاگینهای ثالث مثل Dynamic Content for Elementor استفاده کرد. در مقابل ACF برای ساخت فیلدها دارای انعطاف پذیری بیشتری میباشد.
چرا نیاز به دسترسی به فیلدهای جت انجین از طریق PHP وجود دارد؟
تصور کنید که برای مشتری خود یک سایت طراحی میکنید، که قیمت محصولات یا خدمات را بر اساس یک فرمول خاص و چندین متغیر مشخص در صنعت از جمله قیمت دلار محاسبه میکند. مشتری از شما درخواست میکند که سایت را به نحوی طراحی کنید که با وارد کردن مقادیر مشخص برای متغیرها در فیلدهای جت انجین، قیمت نهایی بطور خودکار محاسبه شده و دیگر نیاز به محاسبه این مبلغ توسط خود مشتری نباشد.
در این حالت با توجه به اینکه Jet Engine به شما اجازه نمی دهد فیلدهای ترکیبی از سایر فیلدها بسازید و محاسبات را انجام دهید، برای بدست آوردن مبلغ نیاز به ایجاد یک تابع توسط PHP دارید. به همین جهت میبایست بتوانید به فیلدهای جت انجین دسترسی داشته باشید. کد نویسی در وردپرس در کنار پلاگینهایی همچون المنتور و جت انجین میتواند به شما اجازه پیاده سازی قابلیتهای بیشماری بدهد. بعنوان مثال قبلا برای اعتبار سنجی فرم شماره تلفن همراه در المنتور از قطعه کد دیگری استفاده کرده بودیم
حتما قبل از بارگذاری قطعه کدهای خود در سایت اصلی آن را در یک محیط توسعه سبک وردپرس تست کنید.
فیلدهای سفارشی در کجا قرار دارند؟
بر اساس نوع طراحی ساختر سایت، فیلدهای سفارشی در دو بخش میتوانند قرار بگیرند. بخش اول فیلدهای مخصوص به محصول است. این فیلدها در پست سفارشی و در صفحه محصول یا خدمات قرار میگیرد. بخش دوم فیلدهای عمومی است. این بخش در صفحه تنظیمات قرار خواهند گرفت. توجه داشته باشید که صفحه تنظیمات با پست سفارشی کاملا متفاوت است و برای درک تفاوت آن میتوانید به راهنمای رسمی ساخت پلاگین در وردپرس مراجعه کنید.
چگونه میتوان در وردپرس تابع PHP درج کرد؟
نگران نباشید! حتی اگر برنامه نویسی بلد نیستید انجام این کار بسیار ساده است. راحتترین روش برای درج کد PHP به منظور دسترسی به فیلدهای جت انجین در سایت وردپرسی استفاده از پلاگینهایی مانند WPCode میباشد. این پلاگین به شما اجازه میدهد تا کد مورد نظر خود را در تمامی سایت درج کنید. پلاگینهای دیگری نیز برای انجام این کار وجود دارند.
در مرحله بعد کافی است از بخش Add Snippet بر روی گزینه Add New کلیک کنید.
حال بر روی گزینه Add Your Custom Code (New Snippet) کلیک کنید.
برای قطعه کد یک نام انتخاب کنید و در محل مشخص شده کد خود و تابع مورد نظر برای دسترسی به فیلدهای جت انجین را وارد کنید.
برای ذخیره کردن قطعه کد خود بر روی گزینه Save Snippet کلیک کنید و پس از ذخیره سازی، بر روی گزینه Inactive کلیک کنید تا قطعه کد شما فعال شده و در تمام سایت نمایش داده شود.
کدهای PHP برای دسترسی به فیلدهای جت انجین
قطعه کد کامل دسترسی به فیلدها در زیر نمایش داده شده است در ادامه به بررسی هر بخش از این قطعه کد میپردازیم. برای تست این قطعه کد، قبل از آن که بطور مستقیم از آن در وبسایت خود استفاده کنید پیشنهاد می کنم تا در یک محیط توسعه لوکال مانند داکر این قطعه کد را تست کنید.
function calculate_jet_engine_fields_variable($atts) {
// Extract shortcode attributes
$atts = shortcode_atts(array(
'post_id' => get_the_ID(), // Default to current post ID if not provided
), $atts);
// Get the post ID from the shortcode attributes
$post_id = $atts['post_id'];
// Get the values of fields A and B for the post
$variable_1 = floatval(get_post_meta($post_id, 'variable_1_field_name', true));
$variable_2 = floatval(get_post_meta($post_id, 'variable_2_field_name', true));
// Get the value of field C from the options page "price_options"
$option_variable_page = get_option('option_variable_page_name');
$option_variable = isset($option_variable_page['option_variable_name']) ? floatval($option_variable_page['option_variable_name']) : 1;
// Perform the calculation
$calculated_variable = ($variable_1 * $variable_2) / $option_variable;
// Return the formatted result
return $calculated_variable;
}
add_shortcode('calculate_jet_engine_fields_variable', 'calculate_jet_engine_fields_variable');
بدنه تابع
در اولین قدم باید ساختار تابع خود را تعریف کنیم. به این منظور یک تابع تعریف کرده و در نهایت برای استفاده از خروجی تابع یک کد کوتاه در وردپرس مشخص می کنیم. در تابع add_shortcode پارامتر اول نام کد کوتاه و پارامتر دوم نام تابع است که در این مثال به منظور راحتی بیشتر هر دو یک نام قرار داده شدهاند.
function calculate_jet_engine_fields_variable($atts) {
}
add_shortcode('calculate_jet_engine_fields_variable', 'calculate_jet_engine_fields_variable');
دریافت مشخصات پست
برای دسترسی به فیلدهای ثبت شده در پستهای سفارشی ابتدا باید ID مخصوص به پست را دریافت کرد و سپس از طریق آن به مقادیر ذخیره شده در فیلدهای جت انجین دسترسی داشت. این کار توسط قطعه کد زیر انجام میشود.
// Extract shortcode attributes
$atts = shortcode_atts(array(
'post_id' => get_the_ID(), // Default to current post ID if not provided
), $atts);
// Get the post ID from the shortcode attributes
$post_id = $atts['post_id'];
دریافت مقادیر فیلدهای جت انجین در پست سفارشی
برای دسترسی به متغیرها یک نام متغیر در نظر گرفته و به کمک تابع get_post_meta با نام ثبت شده برای متغیر در Jet Engine مقدار آن را فراخوانی میکنیم. همزمان با فراخوانی متغیرها به جهت انجام محاسبات ریاضی نوع آنها را به Float تغییر میدهیم. توجه داشته باشید که برای عملکرد درست باید حتما نام متغیرها با نام ذخیره شده در جت انجین یکسان باشد. به عنوان مثال در قطعه کد زیر variable_1_field_name، باید دقیقا در جت انجین ذخیره شده باشد. در تصویر زیر محل مشخص شده نام فیلد را نشان میدهد.
// Get the values of fields A and B for the post
$variable_1 = floatval(get_post_meta($post_id, 'variable_1_field_name', true));
$variable_2 = floatval(get_post_meta($post_id, 'variable_2_field_name', true));
دریافت مقادیر فیلدها در صفحه تنظیمات در منو
اگر متغیر در صفحه تنظیمات و بصورت عمومی تعریف شده بود، ابتدا یک متغیر برای دسترسی به صفحه تنظمیات تعریف میکنیم. سپس از طریق آن به اطلاعات فیلدهای جت انجین دسترسی پیدا میکنیم.
// Get the value of field C from the options page "price_options"
$option_variable_page = get_option('option_variable_page_name');
$option_variable = isset($option_variable_page['option_variable_name']) ? floatval($option_variable_page['option_variable_name']) : 1;
استفاده از عملگرها و نمایش نتیجه محاسبات
حال که تمامی متغیرها فراخوانی شدهاند میتوانیم محاسبات خود را انجام داده و در نهایت نتایج بدست آمده را باز گردانیم.
// Perform the calculation
$calculated_variable = ($variable_1 * $variable_2) / $option_variable;
// Return the formatted result
return $calculated_variable;
می توانید برای نمایش نتابج محاسبات در المنتور از شورتکد تعریف شده استفاده کنید. در محل مورد نظر با قرار دادن کد کوتاه [calculate_jet_engine_fields_variable] به مقادیر حاصل از محاسبات دسترسی داشته باشید.
سؤالات متداول
بله، در واقع دسترسی به مقادیر ذخیره شده در فیلدهای جت انجین بسیار ساده است. تنها کافیست از تابع get_post_meta استفاده کنید. در این مقاله شیوه استفاده از آن را کاملا شرح دادهایم.
پاسخ به این سؤال کاملا بستگی به پروژه شما دارد. اگر در پروژه خود متکی به استفاده از المنتور هستید قطعا جت انجین گزینه مناسبتری است. اما اگر بطور کامل پوسته را برنامه نویسی میکنید به جهت انعطاف پذیری بیشتر و وجود منابع بیشتر پلاگین ACF میتواند برای شما گزینه مناسبتری باشد.
جمعبندی
استفاده از کدهای PHP برای دسترسی به فیلدهای جت انجین بسیار کاربردی است و میتواند به شما توانایی اضافه کردن فیچرهای جدید به سایت را بدهد. در هنگام استفاده از این کدها باید حواستان به استفاده صحیح از نام فیلدهای سفارشی باشد. اگر برای سایت پوسته شخصی سازی شده با زبان برنامهنویسی PHP طراحی میکنید، استفاده از ACF میتواند مناسب تر باشد. به نظر میرسد، منابع در دسترس برای پلاگین ACF بیشتر باشند. این مقاله با رویکرد استفاده از جت انجین در ترکیب با المنتور نوشته شده است، هرچند که میتوانید از آن در طراحی پوستهها به کمک PHP نیز استفاه کنید.