سلام وعرض ادب
در قسمت قبل ما یک صفحه ایجاد کردیم که کد های تنظیمات رو در اون به نمایش بزاریم
درکل کد هامون تا اینجا رسید
<?php
function reg_theme_settings(){
register_setting( 'mytheme_settings_group', 'mytheme_settings' );
}
add_action( 'admin_init', 'reg_theme_settings' );
function add_my_settings_page() {
add_menu_page( "my setting theme ", "my setting theme ", 'manage_options', 'settings', 'theme_settings_page');
}
add_action( 'admin_menu', 'add_my_settings_page' );
function theme_settings_page() {
?>
<div>
<p>این جایگاه کد های بصری است </p>
</div>
<?php
}
?>
خوب برای ادامه باید یک سری فیلد اضافه کنیم و بعد ذخیره کنیم و در قالب اونا رو فراخوانی کنیم
مرحله اول ایجاد فیلد :
برای ایجاد فیلد باید به وردپرس بفهمونیم که ما یک دسته برای ذخیره سازی داریم که یدونه فیلد به نام فلان توش وجود که باید زمانی که کاربر روی ذخیره سازی کلیک کرد تو اونو بگیری و ذخیره کنی
توی کد قبل ما مشخص کردیم که :
function reg_theme_settings(){
register_setting( 'mytheme_settings_group', 'mytheme_settings' );
}
add_action( 'admin_init', 'reg_theme_settings' );
نام دسته ما mytheme_settings_group است و فیلد ما نامش mytheme_settings است
حال در بخش کد های بصری یعنی اینجا :
function theme_settings_page() {
?>
<div>
<p>این جایگاه کد های بصری است </p>
</div>
<?php
}
?>
باید چند کد اضافه بشه
یک :
settings_fields( 'mytheme_settings_group' );
که به مفهومه خروجی یا شروع دسته فیلد های ما است
سایت اصلی وردپرس در مورد settings_fields و چگونگی استفاده در تنظیمات
دوم:
do_settings_sections( 'mytheme_settings_group' );
کپی
این کد تقربیا میشه گفت اعلام میکنه تنظیمات این دسته از اینجا آغاز میشه
سایت اصلی وردپرس در مورد do_settings_sections و چگونگی استفاده در تنظیمات
سوم :
<input type="text" name="mytheme_settings" value="<?php echo get_option('mytheme_settings') ; ?>" />
کپی
کد فیلد ما بصورت html بعضی قسمت های php که توضیح میدم
کد بالا داره یک انپوت باکس از نوع متن معرفی میکنه که نامش mytheme_settings است دقت کنید که این نام فیلد با نامی که به وردپرس معرفی کردیم یکی است و یکی هم باید باشد یعنی mytheme_settings از دسته mytheme_settings_group رو وردپرس ذخیره میکنه
بخش value ما یک کد php داریم که همین فیلد رو اگر داده ای قبلا درونش ذخیره شده باشد در value این فیلد نشون بده یعنی اگر شما نوشتید فلان وذخیره کردید دوباره این صفحه باز شود متن داخل فیل همان ذخیره شده شما باشد
چهارم :
submit_button();
کپی
دکمه ذخیره سازی تنظیمات دقت کنید همه این چهار مرحله باید درون یک تگ form قرار بگیرند به این صورت که پایین آمده
<?php
function reg_theme_settings(){
register_setting( 'mytheme_settings_group', 'mytheme_settings' );
}
add_action( 'admin_init', 'reg_theme_settings' );
function add_my_settings_page() {
add_menu_page( "my setting theme ", "my setting theme ", 'manage_options', 'settings', 'theme_settings_page');
}
add_action( 'admin_menu', 'add_my_settings_page' );
function theme_settings_page() {
?>
<form method="post" action="options.php">
<?php settings_fields( 'mytheme_settings_group' ); ?>
<?php do_settings_sections( 'mytheme_settings_group' ); ?>
<div>
<input type="text" name="mytheme_settings" value="<?php echo get_option('mytheme_settings') ; ?>" />
</div>
<?php submit_button(); ?>
</form>
<?php
}
?>
کپی
خوب تا اینجا فیلد اضافه کردیم وحتی داخل تنظیمات هم فرواخوانی کردیم البته یک نکته هم در مورد get_option که شما می توانید که از get_option هم متن خروجی بگیرید و هم آرایه وهم آبجکت چندتا مثال میزنم جابیفته
آرایه در ذخیره سازی تنظیمات :
<?php
function reg_theme_settings(){
register_setting( 'mytheme_settings_group', 'mytheme_settings' );
}
add_action( 'admin_init', 'reg_theme_settings' );
function add_my_settings_page() {
add_menu_page( "my setting theme ", "my setting theme ", 'manage_options', 'settings', 'theme_settings_page');
}
add_action( 'admin_menu', 'add_my_settings_page' );
function theme_settings_page() {
?>
<form method="post" action="options.php">
<?php settings_fields( 'mytheme_settings_group' ); ?>
<?php do_settings_sections( 'mytheme_settings_group' ); ?>
<div>
<?php
$mytheme_settings=get_option( 'mytheme_settings' );
?>
<input type="text" name="mytheme_settings[]" value="<?php echo mytheme_settings[0] ; ?>" />
<input type="text" name="mytheme_settings[]" value="<?php echo mytheme_settings[1]; ?>" />
<input type="text" name="mytheme_settings[]" value="<?php echo mytheme_settings[2]; ?>" />
<input type="text" name="mytheme_settings[]" value="<?php echo mytheme_settings[3]; ?>" />
<input type="text" name="mytheme_settings[]" value="<?php echo mytheme_settings[4]; ?>" />
</div>
<?php submit_button(); ?>
</form>
<?php
}
?>
کپی
به کد بالا دقت کنید چند فیلد ایجاد کردم با نام های یکسان ولی از براکت([]) جلوی نام استفاده کردم که این حالت باعث میشه زمانی که دکمه ذخیره زده بشه کد ها بصورت ظرفی با نام mytheme_settings و با زیر مجموعه هایی که داده فیلد ها به تریب در ان است ذخیره بشه خوب برای فراخوانی هم بصورت قبل انجام میدیم
$mytheme_settings=get_option( 'mytheme_settings' );
کپی
ولی خورجی بصورت آرایه است که برای نمایش باید به تریب شمارش داده ها را نمایش دهیم
echo mytheme_settings[4];
کپی
کد بالا داده فیلد 4 رو نشون میده البته از 0 که شما بلدید
انشاالله در جلسه بعد ساخت تنظیمات توسط خود وردپرس رو انجام میدیم