با سلام
در پنل ادمین یک منو برای قالب ایجاد شده که زیر منو تنظیمات داره و می خواهم با کلیک روی تنظیمات در صفحه ای که باز میشه یک منو مثل منوی پنل ادمین وردپرس داشته باشم
سلام بر شما ، میخواید پنل تنظیمات قالب درست کنید؟
بله
دوست عزیز این مورد رو نمیشه به صورت متن توضیح داد ، به زودی آموزش درست کردن ادمین پیج برای همین قالب رو قرار میدیم
ولی اگر مایل هستید اطلاعات بیشتری کسب کنید به این لینک نگاهی بندازید
https://developer.wordpress.org/reference/functions/add_menu_page/
منظورم اینه مثل منوی اصلی که از توابع وردپرس استفاده میشه مثل
برای منو پنل تنظیمات هم از توابع و هوک وردپرس استفاده میشه؟
و اگه جواب بله هست از چه تابع و هوک استفاده میشه تا سرچ کنم دربارش اطلاعات بدست بیارم
اره ، یه اکشن میزنید به admin_menu و تابع مورد نظر رو برای فراخوانی بهش میدید
توی تابع مورد نظر هم از تابع add menu page استفاده میکنید
function add_theme_options_panel(){
global $theme_panel_option_page;
$theme_panel_option_page = add_menu_page('تنظیمات قالب', 'تنظیمات قالب', 'manage_options', 'theme-options', 'add_theme_option_panel_function', 'dashicons-admin-generic');
}
add_action('admin_menu', 'add_theme_options_panel');
باتشکر
برای ساخت منوی اصلی از add menu page استفاده کرده بودم
برای منو داخلی میخاستم بدونم
اینجا منوی داخلی با html css درست کردم
توی این کدی که نوشته شده به add_theme_option_panel_function دقت کن این همون تابعی هستش که موارد مورد نیاز رو توش مینویسیم. ولی همون طور که گفتم این موارد رو نمیشه با پرسش متنی توضیح داد .
من اخر محتوا کل کدهایی که برای یه قالب نوشتم رو میزارم میتونید بخونیدشون.
<?php
function jozve_theme_options_panel(){
global $theme_panel_option_page;
$theme_panel_option_page = add_menu_page('تنظیمات قالب', 'تنظیمات قالب', 'manage_options', 'theme-options', 'jozve_theme_option_panel_function', 'dashicons-admin-generic');
}
add_action('admin_menu', 'jozve_theme_options_panel');
function jozve_theme_option_panel_function(){
echo '<div class="wrap"><div id="icon-options-general" class="icon32"><br></div> <h2>پنل تنظیمات</h2></div>';
$withe_list = array(
'index-page',
'author-page',
'single-page',
'comment-like',
'post-like',
'main-slider',
'slider-course',
'login-register-page',
'ads-setting',
'social-network',
'seo-page',
'script',
'install-license',
'send-user-msg',
'noti-bar-sitting',
'store-index-page',
'store-main-slider',
'zarinpal',
'vip-register',
'user-panel',
'theme-color',
'sms-base-panel',
'sms-enable-disable',
'sms-system-test',
'marketing-option',
'information-complete',
);
$jozve_options = get_option('jozve_options');
$default_tab = isset($_GET['tab']) && in_array($_GET['tab'], $withe_list) ? $_GET['tab'] : 'index-page';
if (isset($_POST['op-panel-submit'])) {
switch ($default_tab) {
case 'index-page':
$jozve_options['index-page']['jozve_copy_right_op'] = sanitize_text_field($_POST['jozve_copy_right_op']);
$jozve_options['index-page']['index_search_show'] = $_POST['index_search_show'];
$jozve_options['index-page']['show_site_logo'] = $_POST['show_site_logo'];
$jozve_options['index-page']['site-logo'] = $_POST['site-logo'];
$jozve_options['index-page']['index_videobox_show'] = $_POST['index_videobox_show'];
$jozve_options['index-page']['fl1_script'] = base64_encode(esc_html($_POST['fl1_script']));
$jozve_options['index-page']['fl1_script'] = base64_encode(str_replace('\\', '', $_POST['fl1_script']));
$jozve_options['index-page']['fl2_script'] = base64_encode(str_replace('\\', '', $_POST['fl2_script']));
$jozve_options['index-page']['footer_about'] = $_POST['footer_about'];
$jozve_options['index-page']['qrcode'] = $_POST['qrcode'];
$jozve_options['index-page']['vip_plan'] = $_POST['vip_plan'];
$jozve_options['index-page']['footer-info'] = $_POST['footer-info'];
$jozve_options['index-page']['video_show_count'] = $_POST['video_show_count'];
$jozve_options['index-page']['qrcode_show'] = $_POST['qrcode_show'];
$jozve_options['index-page']['our_plans'] = nl2br($_POST['our_plans']);
$jozve_options['index-page']['show_nemad_logo'] = $_POST['show_nemad_logo'];
break;
case 'author-page':
$jozve_options['author-page']['author_search_show'] = $_POST['author_search_show'];
$jozve_options['author-page']['author_box_bio_show'] = $_POST['author_box_bio_show'];
$jozve_options['author-page']['author_box_info_show'] = $_POST['author_box_info_show'];
break;
case 'social-network':
$jozve_options['social-network']['telegram-url'] = sanitize_text_field($_POST['telegram-url']);
$jozve_options['social-network']['telegram-show'] = $_POST['telegram-show'];
$jozve_options['social-network']['inst-url'] = sanitize_text_field($_POST['inst-url']);
$jozve_options['social-network']['instagram-show'] = $_POST['instagram-show'];
$jozve_options['social-network']['linkedin-url'] = sanitize_text_field($_POST['linkedin-url']);
$jozve_options['social-network']['linkedin-show'] = $_POST['linkedin-show'];
$jozve_options['social-network']['facebook-url'] = sanitize_text_field($_POST['facebook-url']);
$jozve_options['social-network']['facebook-show'] = $_POST['facebook-show'];
$jozve_options['social-network']['twitter-url'] = sanitize_text_field($_POST['twitter-url']);
$jozve_options['social-network']['twitter-show'] = $_POST['twitter-show'];
$jozve_options['social-network']['google-plus-url'] = sanitize_text_field($_POST['google-plus-url']);
$jozve_options['social-network']['google-plus-show'] = $_POST['google-plus-show'];
$jozve_options['social-network']['whatsapp-url'] = sanitize_text_field($_POST['whatsapp-url']);
$jozve_options['social-network']['whatsapp-show'] = $_POST['whatsapp-show'];
$jozve_options['social-network']['aparat-url'] = sanitize_text_field($_POST['aparat-url']);
$jozve_options['social-network']['aparat-show'] = $_POST['aparat-show'];
break;
case 'post-like':
$jozve_options['post-like']['post_like_show'] = $_POST['post_like_show'];
break;
case 'comment-like':
$jozve_options['comment-like']['comment_like_show'] = $_POST['comment_like_show'];
break;
case 'single-page':
$jozve_options['single-page']['post_chanel-box-tel_show'] = $_POST['post_chanel-box-tel_show'];
$jozve_options['single-page']['tel-box-title'] = $_POST['tel-box-title'];
$jozve_options['single-page']['tel-box-btn-caption'] = $_POST['tel-box-btn-caption'];
$jozve_options['single-page']['tel-box-link'] = $_POST['tel-box-link'];
$jozve_options['single-page']['post_related_show'] = $_POST['post_related_show'];
$jozve_options['single-page']['related-post-count'] = $_POST['related-post-count'];
$jozve_options['single-page']['share_btn_show'] = $_POST['share_btn_show'];
$jozve_options['single-page']['rrs_show'] = $_POST['rrs_show'];
break;
case 'main-slider':
// begin seven host slide option
// slide 1
$jozve_options['main-slider']['shSlide1_img'] = $_POST['shSlide1_img'];
$jozve_options['main-slider']['shSlide1_url'] = $_POST['shSlide1_url'];
$jozve_options['main-slider']['shSlide1_alt'] = $_POST['shSlide1_alt'];
// slide 2
$jozve_options['main-slider']['shSlide2_img'] = $_POST['shSlide2_img'];
$jozve_options['main-slider']['shSlide2_url'] = $_POST['shSlide2_url'];
$jozve_options['main-slider']['shSlide2_alt'] = $_POST['shSlide2_alt'];
// slide 3
$jozve_options['main-slider']['shSlide3_img'] = $_POST['shSlide3_img'];
$jozve_options['main-slider']['shSlide3_url'] = $_POST['shSlide3_url'];
$jozve_options['main-slider']['shSlide3_alt'] = $_POST['shSlide3_alt'];
// slide 4 add in jozve v5.9
$jozve_options['main-slider']['shSlide4_img'] = $_POST['shSlide4_img'];
$jozve_options['main-slider']['shSlide4_url'] = $_POST['shSlide4_url'];
$jozve_options['main-slider']['shSlide4_alt'] = $_POST['shSlide4_alt'];
// slide 5 add in jozve v5.9
$jozve_options['main-slider']['shSlide5_img'] = $_POST['shSlide5_img'];
$jozve_options['main-slider']['shSlide5_url'] = $_POST['shSlide5_url'];
$jozve_options['main-slider']['shSlide5_alt'] = $_POST['shSlide5_alt'];
// slide 6 add in jozve v5.9
$jozve_options['main-slider']['shSlide6_img'] = $_POST['shSlide6_img'];
$jozve_options['main-slider']['shSlide6_url'] = $_POST['shSlide6_url'];
$jozve_options['main-slider']['shSlide6_alt'] = $_POST['shSlide6_alt'];
// end seven host slide option
break;
case 'slider-course':
// begin seven host slide option
// slide 1
$jozve_options['slider-course']['slider1_img_course'] = $_POST['slider1_img_course'];
$jozve_options['slider-course']['slider1_url_course'] = $_POST['slider1_url_course'];
$jozve_options['slider-course']['slider1_alt_course'] = $_POST['slider1_alt_course'];
//Box Side Slider
$jozve_options['slider-course']['slider1_image_course'] = $_POST['slider1_image_course'];
$jozve_options['slider-course']['slider1_url_image'] = $_POST['slider1_url_image'];
$jozve_options['slider-course']['slider1_alt_image'] = $_POST['slider1_alt_image'];
// end seven host slide option
break;
case 'login-register-page':
$jozve_options['login-register-page']['register-page-text'] = $_POST['register-page-text'];
$jozve_options['login-register-page']['login-page-text'] = $_POST['login-page-text'];
$jozve_options['login-register-page']['reset-page-text'] = $_POST['reset-page-text'];
$jozve_options['login-register-page']['loginpage-term-link'] = $_POST['loginpage-term-link'];
// add jozve 6.0.0 mohammadd **************************************************************
$jozve_options['login-register-page']['recaptcha-visible'] = $_POST['recaptcha-visible'];
$jozve_options['login-register-page']['recaptcha-site-key'] = $_POST['recaptcha-site-key'];
$jozve_options['login-register-page']['recaptcha-secret-key'] = $_POST['recaptcha-secret-key'];
//end jozve v6.0.0 **************************************************************************
break;
case 'seo-page':
$jozve_options['seo-page']['jozve-favicon'] = $_POST['jozve-favicon'];
$jozve_options['seo-page']['keyword-seo'] = $_POST['keyword-seo'];
$jozve_options['seo-page']['description-seo'] = $_POST['description-seo'];
$jozve_options['seo-page']['google-analytics'] = $_POST['google-analytics'];
break;
case 'script':
$jozve_options['jozve-script']['header-script'] = $_POST['header-script'];
$jozve_options['jozve-script']['footer-script'] = wp_normalize_path($_POST['footer-script']);
break;
case 'send-user-msg':
$jozve_options['send-msg-user']['send_msg_on'] = $_POST['send_msg_on_or_off'];
$jozve_options['send-msg-user']['msg_subject'] = $_POST['msg_subject'];
$jozve_options['send-msg-user']['msg_sender_admin'] = $_POST['msg_sender_admin'];
$jozve_options['send-msg-user']['msg_text'] = $_POST['msg_text'];
$jozve_options['send-msg-user']['msg_att'] = $_POST['msg_att'];
break;
case 'noti-bar-sitting':
$jozve_options['noti-bar-sitting']['noti-text'] = $_POST['noti-text'];
$jozve_options['noti-bar-sitting']['noti-disable'] = $_POST['noti-disable'];
$jozve_options['noti-bar-sitting']['noti-btn-text'] = $_POST['noti-btn-text'];
$jozve_options['noti-bar-sitting']['noti-wrapper-color'] = $_POST['noti-wrapper-color'];
$jozve_options['noti-bar-sitting']['noti-btn-color'] = $_POST['noti-btn-color'];
$jozve_options['noti-bar-sitting']['noti-btn-link'] = $_POST['noti-btn-link'];
$jozve_options['noti-bar-sitting']['noti-background'] = $_POST['noti-background'];
break;
case 'store-index-page':
$jozve_options['store-index-page']['noti-banner-disable'] = $_POST['noti-banner-disable'];
$jozve_options['store-index-page']['noti-banner-img'] = $_POST['noti-banner-img'];
$jozve_options['store-index-page']['noti-banner-cat'] = $_POST['noti-banner-cat'];
$jozve_options['store-index-page']['shipping-express-page'] = $_POST['shipping-express-page']; // begin store service section
$jozve_options['store-index-page']['day-guarantee-page'] = $_POST['day-guarantee-page'];
$jozve_options['store-index-page']['cod-page'] = $_POST['cod-page'];
$jozve_options['store-index-page']['best-price'] = $_POST['best-price'];
$jozve_options['store-index-page']['certificate'] = $_POST['certificate'];
$jozve_options['store-index-page']['box-cat-1'] = $_POST['box-cat-1']; // begin store box category option
$jozve_options['store-index-page']['box-cat-2'] = $_POST['box-cat-2'];
$jozve_options['store-index-page']['box-cat-3'] = $_POST['box-cat-3'];
$jozve_options['store-index-page']['box-cat-4'] = $_POST['box-cat-4'];
$jozve_options['store-index-page']['layer1-cat'] = $_POST['layer1-cat']; // begin store layer cat and pic
$jozve_options['store-index-page']['layer1-cat-img'] = $_POST['layer1-cat-img'];
$jozve_options['store-index-page']['layer2-cat'] = $_POST['layer2-cat'];
$jozve_options['store-index-page']['layer2-cat-img'] = $_POST['layer2-cat-img'];
$jozve_options['store-index-page']['layer3-cat'] = $_POST['layer3-cat'];
$jozve_options['store-index-page']['layer3-cat-img'] = $_POST['layer3-cat-img'];
$jozve_options['store-index-page']['layer4-cat'] = $_POST['layer4-cat'];
$jozve_options['store-index-page']['layer4-cat-img'] = $_POST['layer4-cat-img'];
$jozve_options['store-index-page']['layer5-cat'] = $_POST['layer5-cat'];
$jozve_options['store-index-page']['layer5-cat-img'] = $_POST['layer5-cat-img'];
$jozve_options['store-index-page']['layer6-cat'] = $_POST['layer6-cat'];
$jozve_options['store-index-page']['layer6-cat-img'] = $_POST['layer6-cat-img'];
$jozve_options['store-index-page']['layer7-cat'] = $_POST['layer7-cat'];
$jozve_options['store-index-page']['layer7-cat-img'] = $_POST['layer7-cat-img'];
$jozve_options['store-index-page']['store-service-disable'] = $_POST['store-service-disable'];
break;
case 'store-main-slider':
// begin store slider slide option
// slide 1
$jozve_options['store-main-slider']['shSlide1_img'] = $_POST['shSlide1_img'];
$jozve_options['store-main-slider']['shSlide1_url'] = $_POST['shSlide1_url'];
$jozve_options['store-main-slider']['shSlide1_alt'] = $_POST['shSlide1_alt'];
// slide 2
$jozve_options['store-main-slider']['shSlide2_img'] = $_POST['shSlide2_img'];
$jozve_options['store-main-slider']['shSlide2_url'] = $_POST['shSlide2_url'];
$jozve_options['store-main-slider']['shSlide2_alt'] = $_POST['shSlide2_alt'];
// slide 3
$jozve_options['store-main-slider']['shSlide3_img'] = $_POST['shSlide3_img'];
$jozve_options['store-main-slider']['shSlide3_url'] = $_POST['shSlide3_url'];
$jozve_options['store-main-slider']['shSlide3_alt'] = $_POST['shSlide3_alt'];
// slide 4
$jozve_options['store-main-slider']['shSlide4_img'] = $_POST['shSlide4_img'];
$jozve_options['store-main-slider']['shSlide4_url'] = $_POST['shSlide4_url'];
$jozve_options['store-main-slider']['shSlide4_alt'] = $_POST['shSlide4_alt'];
// slide 5
$jozve_options['store-main-slider']['shSlide5_img'] = $_POST['shSlide5_img'];
$jozve_options['store-main-slider']['shSlide5_url'] = $_POST['shSlide5_url'];
$jozve_options['store-main-slider']['shSlide5_alt'] = $_POST['shSlide5_alt'];
// slide 6
$jozve_options['store-main-slider']['shSlide6_img'] = $_POST['shSlide6_img'];
$jozve_options['store-main-slider']['shSlide6_url'] = $_POST['shSlide6_url'];
$jozve_options['store-main-slider']['shSlide6_alt'] = $_POST['shSlide6_alt'];
// end store slider slide option
break;
case 'ads-setting':
//Banner in the Content
$jozve_options['ads_setting']['custom_banner_url'] = $_POST['custom_banner_url'];
$jozve_options['ads_setting']['custom_banner_link'] = $_POST['custom_banner_link'];
$jozve_options['ads_setting']['custom_banner_alt'] = $_POST['custom_banner_alt'];
//Banner in the page Home Video
$jozve_options['ads_setting']['custom_banner_url_video'] = $_POST['custom_banner_url_video'];
$jozve_options['ads_setting']['custom_banner_link_video'] = $_POST['custom_banner_link_video'];
$jozve_options['ads_setting']['custom_banner_alt_video'] = $_POST['custom_banner_alt_video'];
//Banner in the page Home Product
$jozve_options['ads_setting']['custom_banner_url_product'] = $_POST['custom_banner_url_product'];
$jozve_options['ads_setting']['custom_banner_link_product'] = $_POST['custom_banner_link_product'];
$jozve_options['ads_setting']['custom_banner_alt_product'] = $_POST['custom_banner_alt_product'];
$jozve_options['ads_setting']['custom_banner_script'] = base64_encode(str_replace('\\', '', $_POST['custom_banner_script']));
break;
case 'vip-register':
// begin gold plan option save
$jozve_options['vip-register']['gold-plan-month'] = $_POST['gold_plan_month'];
$jozve_options['vip-register']['gold-plan-price'] = $_POST['gold_plan_price'];
$jozve_options['vip-register']['gold-plan-gift-credit'] = $_POST['gold-plan-gift-credit'];
// begin gold plan option save
// begin silver plan option save
$jozve_options['vip-register']['silver-plan-month'] = $_POST['silver_plan_month'];
$jozve_options['vip-register']['silver-plan-price'] = $_POST['silver_plan_price'];
$jozve_options['vip-register']['silver-plan-gift-credit'] = $_POST['silver-plan-gift-credit'];
// begin silver plan option save
// begin bronze plan option save
$jozve_options['vip-register']['bronze-plan-month'] = $_POST['bronze_plan_month'];
$jozve_options['vip-register']['bronze-plan-price'] = $_POST['bronze_plan_price'];
$jozve_options['vip-register']['bronze-plan-gift-credit'] = $_POST['bronze-plan-gift-credit'];
// begin bronze plan option save
$jozve_options['vip-register']['vip-register-term'] = $_POST['vip_register_term'];
break;
case 'zarinpal':
$jozve_options['zarinpal']['merchant_code'] = $_POST['merchant_code'];
break;
case 'user-panel':
$jozve_options['user-panel']['send-post'] = $_POST['send-post'];
$jozve_options['user-panel']['Discount-code-description'] = $_POST['Discount-code-description'];
$jozve_options['user-panel']['discount-code'] = $_POST['discount-code'];
break;
case 'theme-color':
$jozve_options['theme-color']['index-color'] = $_POST['index-color'];
break;
// add in jozve 6.0.0 mohammadd *********************************************************
case 'sms-base-panel':
$jozve_options['sms-base-panel']['sms-system-name'] = $_POST['sms-system-name'];
$jozve_options['sms-base-panel']['sms-link'] = $_POST['sms-link'];
$jozve_options['sms-base-panel']['sms-line'] = $_POST['sms-line'];
$jozve_options['sms-base-panel']['sms-user'] = $_POST['sms-user'];
$jozve_options['sms-base-panel']['sms-password'] = $_POST['sms-password'];
break;
case 'sms-enable-disable':
$jozve_options['sms-enable-disable']['all-site-sms'] = $_POST['all-site-sms'];
$jozve_options['sms-enable-disable']['sms-comment-accept'] = isset($_POST['sms-comment-accept']) ? ($_POST['sms-comment-accept']) : '';
$jozve_options['sms-enable-disable']['sms-mobile-confirm'] = isset($_POST['sms-mobile-confirm']) ? ($_POST['sms-mobile-confirm']) : '';
$jozve_options['sms-enable-disable']['sms-ticket-send'] = isset($_POST['sms-ticket-send']) ? ($_POST['sms-ticket-send']) : '';
$jozve_options['sms-enable-disable']['sms-wallet-transaction'] = isset($_POST['sms-wallet-transaction']) ? ($_POST['sms-wallet-transaction']) : '';
$jozve_options['sms-enable-disable']['sms-site-login'] = isset($_POST['sms-site-login']) ? ($_POST['sms-site-login']) : '';
$jozve_options['sms-enable-disable']['sms-article-send'] = isset($_POST['sms-article-send']) ? ($_POST['sms-article-send']) : '';
break;
case 'marketing-option':
$jozve_options['marketing-option']['wallet-anytime-buy'] = $_POST['wallet-anytime-buy'];
$jozve_options['marketing-option']['wallet-for_register'] = $_POST['wallet-for_register'];
break;
case 'information-complete':
$jozve_options['information-complete']['wallet-info-complete'] = $_POST['wallet-info-complete'];
$jozve_options['information-complete']['percentage-complete'] = $_POST['percentage-complete'];
break;
//end jozve 6.0.0 ***********************************************************************
}
update_option('jozve_options', $jozve_options);
jozve_get_options($jozve_options);
}
include get_template_directory() . '/template-parts/admin/theme-option-panel.php';
}
با تشکر
برای نمایش منو استفاده شده؟ $theme_panel_option_page از theme-option-panel.php در فایل
اره ، همون رو اینکلود کردیم