SHARE
TWEET

WordPress Options Page

wzislam Sep 30th, 2013 102 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. ********************************** */
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top