Advertisement
wzislam

WordPress Options Page

Sep 30th, 2013
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.38 KB | None | 0 0
  1. <?php
  2. /*
  3.  
  4.     CUSTOM ADMIN PANEL IN THEME
  5.  
  6.     Reference: http://wp.tutsplus.com/tutorials/the-complete-guide-to-the-wordpress-settings-api-part-1/
  7.     Authror: Tom McFarlin (http://wp.tutsplus.com/author/tom/)
  8.  
  9.     সংজ্ঞা__________________________________________________
  10.    
  11.     ___FIELDS
  12.     texbox, check box, radio button etc., যা ভ্যালু ডাটাবেজে নিয়ে যাবে
  13.    
  14.     ___SECTIONS
  15.     ফিল্ডগুলোর লজিক্যাল গ্রুপিং হলো সেকশন; সেকশন এর মেনুকেও correspond করবে
  16.  
  17.     ___SETTINGS
  18.     সেকশন আর ফিল্ডের একটি সম্মিলনক্ষেত্র
  19.    
  20.    
  21. */
  22.  
  23.  
  24. /* **********************************
  25. *   THEME OPTIONS STARTS
  26. ********************************** */
  27.  
  28. /* আমরা ন্যানোডিযাইন্‌স-এর জন্য আলাদা একটা অ্যাডমিন বাটন তৈরি করছি
  29.     এজন্য add_menu_page ব্যবহার করছি এবং একটা ফাংশন দিয়ে
  30.     তা ইনিশিয়ালাইজ করছি
  31. */
  32.  
  33. // SEPERATE ADMIN PAGE nanoadmin
  34.  
  35. function nano_admin_menu() {
  36.  
  37.     // syntax: add_menu_page( $page_title*, $menu_title*, $capability*, $menu_slug*, $function*, $icon_url, $position );     -     * - required
  38.     add_menu_page(  
  39.         'nano<span style="font-weight: normal;">admin</span>',                                  // page_title : ঐ পাতায় গেলে যে টাইটেলটা দেখা যাবে
  40.         'nano<span style="font-weight: normal;">admin</span>',                                  // menu_title : মেনুতে যে নামটা দেখা যাবে
  41.         'manage_options',                           // capability : যারা এটা দেখতে পাবে
  42.         'nano_admin',                                   // menu_slug : এই মেনু'র unique ID - slug
  43.         'nano_admin_callback',                  // function : callback function - যেখানে পেজটির দৃশ্যমানতার কোড বসানো হবে
  44.         '',                                                         // icon_url : যে আইকনটা দেখাতে চাই, তার ঠিকানা
  45.         '61'                                                        // position : যে অবস্থানে বা যে সিরিয়ালে দেখা যাবে মেনুটি (60 : Appearance)
  46.     );
  47.    
  48.     // syntax: add_submenu_page( $parent_slug*, $page_title*, $menu_title*, $capability*, $menu_slug*, $function );     -     * - required
  49.     add_submenu_page(
  50.     'nano_admin',                                       // parent_slug : যে মেনুর অধীনে এই সাবমেনুটি বসবে, তার slug বা ID
  51.     '<strong>price</strong>quotation',  // page_title : যে নামটি দেখা যাবে সাব মেনু পেজে
  52.     '<strong>price</strong>quotation',  // menu_title : সাবমেনুর নাম হিসেবে যে নামটি দেখা যাবে
  53.     'manage_options',                               // capability : যারা এটা দেখতে পাবে
  54.     'price_quotation',                              // menu_slug : এই সাব মেনু'র unique ID - slug
  55.     'price_quotation_callback'              // function : callback function - যেখানে পেজটির দৃশ্যমানতার কোড বসানো হবে
  56.     );
  57.    
  58. } // nano_admin_menu()
  59.  
  60. add_action( 'admin_menu', 'nano_admin_menu' );
  61.  
  62.  
  63. // CALLBACK FUNCTION FOR nanoadmin
  64.  
  65. // main menu callback
  66. function nano_admin_callback() { ?>
  67.         <div class="wrap">
  68.             <h2><strong>nano</strong>admin</h2>
  69.             <p>welcome to <strong>nano</strong>admin panel</p>
  70.             <?php //Make a call to the WordPress function for rendering errors when settings are saved. ?>
  71.             <?php settings_errors(); ?>
  72.            
  73.             <?php // Create the form that will be used to render our options ?>
  74.             <form method="post" action="options.php">  
  75.                 <?php settings_fields( 'general' ); ?>  
  76.                 <?php do_settings_sections( 'general' ); ?>            
  77.                 <?php submit_button(); ?>  
  78.             </form>
  79.         </div> <!-- .wrap -->
  80. <?php }
  81.  
  82. // sub menu callback
  83. function price_quotation_callback() { ?>
  84.         <div class="wrap">
  85.             <h2><strong>price</strong>quotation</h2>
  86.             <p>when price tag is OFF, get user's price quotation request here in this admin panel area</p>
  87.         </div> <!-- .wrap -->
  88. <?php }
  89.  
  90.  
  91.  
  92. /*
  93.     প্রথমেই আমরা একটা সেকশন তৈরি করছি, যেখানে আমাদের কিছু ফিল্ড থাকবে
  94.     সেকশনের ফাংশনটা ইনিশিয়ালাইজ করার জন্য একটা ফাংশন দিয়ে একে ঢাকতে হবে
  95.     তারপর admin_init দিয়ে hook করতে হবে
  96. */
  97.  
  98.  
  99. function initialize_theme_options() {
  100.    
  101.         // এই nanodesigns_admin_control_options দিয়ে সেকশনকে কল করা হবে
  102.         if( false == get_option( 'nanodesigns_admin_control_options' ) ) {
  103.             add_option( 'nanodesigns_admin_control_options' );  
  104.         } // end if
  105.    
  106.         // syntax: add_settings_section( $id*, $title*, $callback*, $page* );     -     * - required
  107.         add_settings_section(
  108.             'admin_control_section',                // id : খুব গুরুত্বপূর্ণ, এই আইডি দিয়েই পরবর্তিতে ফিল্ডগুলো নির্দেশ করা হবে
  109.             'admin<span style="font-weight: normal;">control</span>',                               // name : যে নামে সেকশনটা দেখা যাবে স্ক্রিনে, পাতাটা খুললে
  110.             'nanodesigns_admin_control',        // callback : ফাংশনের নাম, যা ব্যবহার করে এই সেকশনকে কার্যকর করা হবে
  111.             'general'                                               // page : যে পেজের অধীনে সেকশনটি স্থান পাবে (প্রাথমিকভাবে সেটিংস > জেনারেল পেজে রাখছি)
  112.         );
  113.        
  114.         // syntax: add_settings_field( $id*, $title*, $callback*, $page*, $section, $args );     -     * - required
  115.         add_settings_field (
  116.             'show_price',                               // id : খুব গুরুত্বপূর্ণ, এই আইডি ধরেই পরবর্তিতে ফিল্ড থেকে ডাটা ডাটাবেজে ইনপুট নেয়া হবে
  117.             '<img src="' . get_bloginfo( template_directory ) . '/admin/images/price.png"/> Show Price (৳)',    // name : যে নামে field-টা দেখা যাবে স্ক্রিনে
  118.             'show_price_callback',              // callback : ফাংশনের নাম, যা ব্যবহার করে এই ফিল্ডকে কার্যকর করা হবে
  119.             'general',                                      // page : যে পেজে ফিল্ডটা প্রদর্শিত হবে (যদি আলাদা কোনো সেটিংস না করা হয়, তবে বর্তমান পেজেই দেখানো যায়)
  120.             'admin_control_section',            // section : যে সেকশনে দেখাতে চাই ফিল্ডটা
  121.             array (
  122.                 'Activate the "Product Price" into the whole website'
  123.             )
  124.         );
  125.        
  126.         // REGISTER THE FIELD TO GET INPUT INTO db
  127.         // Finally, we register the fields with WordPress
  128.         // syntax:
  129.         register_setting(  
  130.             'general',  
  131.             'show_price'  
  132.         );
  133.        
  134.  
  135. } // end initialize_theme_options()
  136.  
  137. add_action( 'admin_init', 'initialize_theme_options' );
  138.  
  139.  
  140. /* --------------------------------------------------------
  141.     SECTION CALLBACK
  142. -------------------------------------------------------- */
  143.  
  144. // 'Theme Options' callback function
  145. function nanodesigns_admin_control() { ?>
  146.     <p style="color: grey;">control most of the admin features of the whole site just from here</p>
  147. <?php }
  148.  
  149. // 'Show Price' callback function
  150. function show_price_callback( $args ) {
  151.     $html = '<input type="checkbox" id="show_price" name="show_price" value="1" ' . checked( 1, get_option( 'show_price' ), false ) . '/>';
  152.     $html .= '<label for="show_price"> ' . $args[0] . '</label>';
  153.     echo $html;
  154.     }
  155.  
  156.  
  157. /* **********************************
  158. *   THEME OPTIONS ENDS
  159. ********************************** */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement