خوب تا اینجا ساخت تنظیمات قالب رو بصورت یک صفحه جداگانه یاد گرفتید حالا میریم سراغ ساخت تنظیمات توسط خود وردپرس که بصورت سفارشی سازی در قالب ایجاد میشه یعنی این تصویر
در مرحله اول ما باید یک تابه تعریف کنیم که در اون ورودی رو با wp_customize پرکنیم وهم به وردپرس بفهمونیم که این تابع رو در customize_register قلاب کن بچه صورت به کد زیر دقت کنید تا توضیح بدم
<?php
function kingblack4_option( $wp_customize ) {
}
add_action( 'customize_register', 'kingblack4_option' );
?>
کپی
خوب توی کد بالا ما ظرف wp_customize در ورودی تابع قرار دادیم چه کاربردی داره ؟
کاربردش اینه که وقتی وردپرس این کد رو بخواد اجرا کنه این ظرف رو با کلاس WP_Customize_Manager پر میکنه که ابزار ها مختلفی رو در اختیار ما قرار میده که میتونید توی این صفحه این کلاس را با مشخصات کامل ببینید
خوب توی add_action هم گفتیم تابع kingblack4_option به customize_register قلاب کن
سفارشی سازی ( section )
مرحله بعدی در ساخت سفارشی سازی ، مرحله ایجاد section است یعنی ما باید یک section ایجاد کنیم که فیلد ها درون قرار بگیرن
section به معنی همون بخش خودمون است توی تصویر قبلی هم نگاه کنید به هویت سایت یا رنگ ها و از قبلی اونها section میگن
$wp_customize->add_section( 'homepage' , array );
کد add_section یک ورودی اجباری داره که به نام id است که در کد بالا ما اونو با homepage پر کردیم یعنی بخش homepage رو ایجاد کنید ولی قسمت array بقیه تنظیمات section بصورت آرایه تحویل میگیره که این تنظیمات به شرح زیر است
priority : نوع داده عددی
بفهموم جایگاه قرار گرفتن است
panel : نام پنلی که این سکشن به آن تعلق دارد
capability : قابلیت های مورد نیاز برای این سکشن یعنی مثلا کسی که اجازه ویرایش مطالب رو داره اینو ببینه
theme_supports : ویژگی ها موردنیاز که باید در قالب وجود داشته باشد تا این پنل فعال شود مثل ووکامرس
title : عنوان سکشن
description : توضیحات
type : نوع سکشن که چیزی خاصی از نمی دونم
active_callback : باز گردانی داده به تابعی که نام آن در ایجا نوشته شود
description_hidden : توضیحات مخفی در زیر آیکن راهنما
$wp_customize->add_section( 'homepage' , array(
'title' => __( 'صفحه اول', 'mytheme' ),
'priority' => 1,
) );
حالا باید یک کنترل یا همان فیل مثل انتخاب رنگ یا نوشتن متن اضافه کنیم البته کنترل ها از دوبخش کد نیاز یک جایگاه ذخیره سازی رو ایجاد میکنه وبخش بعدی هم کد کنترل رو میسازه
$wp_customize->add_setting( 'header_textcolor' , array(
'default' => '#000000',
'transport' => 'refresh',
) );
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
'label' => __( 'Header Color', 'mytheme' ),
'section' => 'homepage',
'settings' => 'header_textcolor',
) ) );
کد بالا نمونه ای از ایجاد یک کنترل که بخش اول ذخیره سازی و بخش دوم کنترل انتخاب رنگ است
خوب اول add_setting توضیح بدم
$wp_customize->add_setting( 'id' , array() );
فیلد اول id است که بصورت string نوشته میشه و واجبی است
بخش بعدی یک سری تنظیمات که بصورت آرایه مشخص میشه که شامل موارد زیر است
type : نوع تنظیمات رو مشخص میشه که بصورت عادی theme_mod است البته حالات مختلفی دیگر دارد که در این مطلب نمی گنجد فقط اشاره میکنم (nav_menus،options،posts،attachments،widgets،theme_mod )
capability : نوع دسترسی به این تنظیمات مشخص می شود مثل نویسنده باشد
theme_supports : پیشنیازی که در قالب باید وجود داشته باشد
default : مقدار پیش فرض مثلا رنگ ابی
transport : نوع رفرش صفحه را مشخص می کند نوع اول که بصورت پیشفرض قرار میگیرد refresh است که هر بار تغییر کند صفحه refresh می شود ولی نع دوم postMessage است که یک حالت سفارشی است که به کد های جاوا اسکریپت شما اجازه دسترسی و تغییر در نوع رفرش شدن را میدهد
validate_callback : تابع برای تایید نوع داده یعنی نام تابعی که می خواید داده رو قبل از ذخیره سازی بررسی کنه اینجا مینویسد
sanitize_callback : برای قرار دادن تابع سفارشی سازی نوع داد مثل حذف اسلش و غیره البته این دقت هم رو بکنید تابع هر کالک از نوع معرفی شده باید باشد و شما نمی توانید در ایابع کار های دیگر انجام دهید
sanitize_js_callback : نوع داده خروجی را تبدیل به جیسون کرده و برای استفاده
dirty : چیزی در موردش نمیدونم و به معنی تنظیمات کثیف و تمییز است
خوب تا اینجا کد ها بصورت زیر شده
<?php
function kingblack4_option( $wp_customize ) {
$wp_customize->add_section( 'homepage' , array(
'title' => __( 'صفحه اول', 'mytheme' ),
'priority' => 1,
) );
$wp_customize->add_setting( 'header_textcolor' , array(
'default' => '#000000',
'transport' => 'refresh',
) );
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
'label' => __( 'Header Color', 'mytheme' ),
'section' => 'homepage',
'settings' => 'header_textcolor',
) ) );
}
add_action( 'customize_register', 'kingblack4_option' );
?>
انشاالله در آموزش ها بعدی به ساخت کنترل سفارشی و توضیح بقیه کنترل ها می پردازم