<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                這不再是推薦使用主題選項的方式。 Customizer API是為用戶提供更多控制和靈活性的推薦方法 主題作者可能需要提供設置屏幕,因此用戶可以自定義主題的使用或作品。 執行此操作的最佳方法是創建一個管理菜單項,允許用戶從所有管理屏幕訪問該設置屏幕。 # 參考方法 ## 菜單頁 - add_menu_page() - add_object_page() - add_utility_page() - remove_menu_page() ## 子菜單頁 - add_submenu_page() - remove_submenu_page() ## WordPress管理菜單 - add_dashboard_page() - add_posts_page() - add_media_page() - add_links_page() - add_pages_page() - add_comments_page() - add_theme_page() - add_plugins_page() - add_users_page() - add_management_page() - add_options_page() ## 每個劇情需要一個鉤子 要添加管理菜單,您需要做三件事: - 創建一個包含菜單建立代碼的函數。 - 如果要為網絡添加菜單,請使用admin_menu操作鉤子或network_admin_menu注冊上述功能。 - 創建屏幕的HTML輸出,當單擊菜單項時顯示。 大多數開發人員忽略了此列表中的第二步。 你不能簡單地調用菜單代碼。 你需要把它放在一個函數中,然后注冊這個函數。 以下是描述這三個步驟的簡單示例。 這將在“設置”頂層菜單下添加一個子級菜單項。 選擇時,該菜單項將顯示非常基本的屏幕。 ``` <?php /** Step 2 (from text above). */ add_action( 'admin_menu', 'my_menu' ); /** Step 1. */ function my_menu() { add_options_page( 'My Options', 'My Menu', 'manage_options', 'my-unique-identifier', 'my_options' ); } /** Step 3. */ function my_options() { if ( !current_user_can( 'manage_options' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); } echo 'Here is where I output the HTML for my screen.'; echo '</div><pre>'; } ?> ``` 在此示例中,函數my_menu()通過add_options_page()函數將新項添加到設置管理菜單。 >[info] 注意:請注意,步驟2中的add_action()調用在admin_menu鉤子下注冊my_menu()函數。 沒有這個,add_action()調用,將會拋出一個未定義函數的PHP錯誤。 最后,add_options_page()調用是指當有人點擊菜單項時,包含要顯示的實際頁面(和要處理的PHP代碼)的my_options()函數。 以下部分將對這些步驟進行更詳細的描述。 請記住將菜單和頁面的創建包含在函數中,并使用admin_menu鉤子來在正確的時間開始整個過程。 ## 確定新菜單的位置 在創建新菜單之前,首先決定菜單是頂級菜單還是子級菜單項。頂級菜單顯示為管理菜單中的新部分,并包含子級菜單項。這意味著子級菜單項是現有頂級菜單的成員。 主題很少需要創建一個新的頂級菜單。如果這個主題向WordPress引入了一個全新的概念,并且需要許多屏幕來做,那么這個主題可能需要一個新的頂級菜單。只有當您真正需要多個相關屏幕才能使WordPress做最初的設計時,才能考慮添加頂級菜單。新的頂級菜單的示例可能包括作業管理或會議管理。請注意,通過本機帖子類型注冊,WordPress會自動創建頂級菜單來管理此類功能。 如果不需要創建頂級菜單,則需要決定在什么頂級菜單中放置新的子級菜單項。作為參考,幾個主題添加了現有WordPress頂層菜單下的子級菜單項。 使用本指南的WordPress頂級菜單來確定您的子級菜單項的正確位置: - Dashboard – 信息中心為您的網站,并包括更新選項更新WordPress核心,插件和主題。 - Posts – 顯示用于撰寫帖子(面向時間的內容)的工具。 - Media – 上傳和管理您的圖片,視頻和音頻。 - Links – 管理對其他博客和感興趣的網站的引用。 - Pages – 顯示用于編寫稱為頁面的靜態內容的工具。 - Comments – 控制和監管讀者對帖子的回復。 - Appearance – 顯示用于操縱theme/style文件,側邊欄等的控件。 - Plugins – 顯示處理插件管理的控件,而不是插件本身的配置選項。 - Users – 顯示用戶管理控件。 - Tools – 管理博客數據的導出,導入甚至備份。 - Settings – 顯示只有管理員應該查看的插件選項。 - Network Admin – 顯示在網絡上設置的插件選項。 而不是admin_menu,您應該使用network_admin_menu(另請參閱創建網絡) ## 頂級菜單 如果您決定了您的主題需要一個全新的頂級菜單,您需要做的第一件事是使用add_menu_page()函數創建一個。 >[warning] 注意:如果您不需要頂級菜單,請跳到“子級菜單”。 參數值: - page_title – 選擇菜單時要顯示在頁面的標題標簽中的文本。 - menu_title – 菜單的屏幕上的名稱文本。 - capability – 該菜單顯示給用戶所需的功能。 當使用Settings API處理表單時,您應該在此處使用manage_options,因為用戶將無法保存其中的選項。 用戶級別已棄用,不能在此處使用。 - menu_slug – 這個菜單由這個菜單引用(這個菜單應該是唯一的)。 在版本3.0之前,這被稱為文件(或句柄)參數。 如果功能參數被省略,則menu_slug應該是處理菜單頁面內容顯示的PHP文件。 - function – 顯示菜單頁面的頁面內容的功能。 - icon_url – 要用于此菜單的圖標的URL。 此參數是可選的。 - position – 菜單中的位置這個菜單應該出現。 默認情況下,如果省略此參數,菜單將顯示在菜單結構的底部。 要查看當前的菜單位置,請在菜單加載后使用print_r($ GLOBALS ['menu'])。 - Sub-Level Menus – 一旦定義了頂級菜單,或者您選擇使用現有的WordPress頂級菜單,就可以使用add_submenu_page()函數定義一個或多個子級菜單項。 ## 子菜單 如果您想要將新菜單項設為子菜單項,可以使用add_submenu_page()函數創建它。 參數值: parent_slug - 父菜單的小數名稱,或標準WordPress管理員文件的文件名,提供要插入子菜單的頂級菜單,或者如果此子菜單正在進行,則為插件文件 自定義頂級菜單。 例子: - Dashboard – add_submenu_page('index.php', ...) - Posts – add_submenu_page('edit.php', ...) - Media – add_submenu_page('upload.php', ...) - Links – add_submenu_page('link-manager.php', ...) - Pages – add_submenu_page('edit.php?post_type=page', ...) - Comments – add_submenu_page('edit-comments.php', ...) - Custom Post Types – add_submenu_page('edit.php?post_type=your_post_type', ...) - Appearance – add_submenu_page('themes.php', ...) - Plugins – add_submenu_page('plugins.php', ...) - Users – add_submenu_page('users.php', ...) - Tools – add_submenu_page('tools.php', ...) - Settings – add_submenu_page('options-general.php', ...) - page_title – 當子菜單處于活動狀態時,將進入頁面的HTML頁面標題的文本。 - menu_title – 選擇菜單時要顯示在頁面的標題標簽中的文本。 - capability – 該菜單顯示給用戶所需的功能。 用戶級別已棄用,不能在此處使用。 - menu_slug – 對于現有的WordPress菜單,處理菜單頁面內容顯示的PHP文件。 對于自定義頂級菜單的子菜單,此子菜單頁面的唯一標識符。 - function – 顯示菜單頁面的頁面內容的功能。 在技術上,如在add_menu_page函數中,函數參數是可選的,但是如果沒有提供,那么WordPress基本上會假設包含PHP文件將生成管理屏幕,而不調用函數。 ## 使用包裝器功能 由于大多數子級菜單屬于“設置”,“工具”或“外觀”菜單,所以WordPress提供了包裝功能,可以使這些頂級菜單中的子級菜單項更容易。 請注意,功能名稱可能與管理UI中看到的名稱不一致,因為它們隨時間變化: - Dashboard ``` <?php add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Posts ``` <?php add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Media ``` <?php add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Links ``` <?php add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Pages ``` <?php add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Comments ``` <?php add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Appearance ``` <?php add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Plugins ``` <?php add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Users ``` <?php add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Tools ``` <?php add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` - Settings ``` <?php add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); ?> ``` 另請參閱主題選項,用于通過Customizer API創建選項的當前推薦方法。 ## 示例 以下是一個快速示例,說明如何插入頂層菜單頁和子菜單頁,子菜單頁上的標題與頂級頁不同。 在此示例中,register_my_theme_more_settings_menu是顯示第一個子菜單頁面的函數的名稱: ``` function register_my_theme_settings_menu() { add_menu_page( "My Theme's Settings", "My Theme", "manage_options", "my-theme-settings-menu" ); } function register_my_theme_more_settings_menu() { add_submenu_page( "my-themes-settings-menu", "More Settings for My Theme", "More Settings", "manage_options", "my-theme-more-settings-menu" ); } add_action( "admin_menu", "register_my_theme_settings_menu"); add_action( "admin_menu", "register_my_theme_more_settings_menu"); ``` 以下是在自定義帖子類型菜單塊下添加選項頁面的示例(另見此處): ## 插入頁面 以下是一個如何將多個菜單插入到各個地方的示例: ``` <?php // Hook for adding admin menus add_action('admin_menu', 'mt_add_pages'); // Action function for hook above function mt_add_pages() { // Add a new submenu under Settings: add_options_page(__('Test Settings','menu-test'), __('Test Settings','menu-test'), 'manage_options', 'testsettings', 'mt_settings_page'); // Add a new submenu under Tools: add_management_page( __('Test Tools','menu-test'), __('Test Tools','menu-test'), 'manage_options', 'testtools', 'mt_tools_page'); // Add a new top-level menu (ill-advised): add_menu_page(__('Test Toplevel','menu-test'), __('Test Top-level','menu-test'), 'manage_options', 'mt-top-level-handle', 'mt_toplevel_page' ); // Add a submenu to the custom top-level menu: add_submenu_page('mt-top-level-handle', __('Test Sub-Level','menu-test'), __('Test Sub-Level','menu-test'), 'manage_options', 'sub-page', 'mt_sublevel_page'); // Add a second submenu to the custom top-level menu: add_submenu_page('mt-top-level-handle', __('Test Sub-Level 2','menu-test'), __('Test Sub-Level 2','menu-test'), 'manage_options', 'sub-page2', 'mt_sublevel_page2'); } // mt_settings_page() displays the page content for the Test settings sub-menu function mt_settings_page() { echo "</pre> <h2>" . __( 'Test Settings', 'menu-test' ) . "</h2> <pre> "; } // mt_tools_page() displays the page content for the Test Tools sub-menu function mt_tools_page() { echo "</pre> <h2>" . __( 'Test Tools', 'menu-test' ) . "</h2> <pre> "; } // mt_toplevel_page() displays the page content for the custom Test Top-Level menu function mt_toplevel_page() { echo "</pre> <h2>" . __( 'Test Top-Level', 'menu-test' ) . "</h2> <pre> "; } // mt_sublevel_page() displays the page content for the first sub-menu // of the custom Test Toplevel menu function mt_sublevel_page() { echo "</pre> <h2>" . __( 'Test Sub-Level', 'menu-test' ) . "</h2> <pre> "; } // mt_sublevel_page2() displays the page content for the second sub-menu // of the custom Test Top-Level menu function mt_sublevel_page2() { echo "</pre> <h2>" . __( 'Test Sub-Level 2', 'menu-test' ) . "</h2> <pre> "; } ?> ``` ## 樣品菜單頁 >[warning] 注意:有關創建設置頁面的信息,請參閱設置API。 前面的示例包含幾個虛擬函數,如mt_settings_page()作為實際頁面內容的占位符。 我們來擴大他們。 如果您想創建一個名為mt_favorite_color的選項,如果網站所有者可以通過“設置”頁面輸入最喜歡的顏色,該怎么辦? mt_options_page()函數需要在屏幕上輸出數據輸入表單,并處理輸入的數據。 這是一個這樣做的功能: ``` // mt_settings_page() displays the page content for the Test settings sub-menu function mt_settings_page() { //must check that the user has the required capability if (!current_user_can('manage_options')) { wp_die( __('You do not have sufficient permissions to access this page.') ); } // Variables for the field and option names $opt_name = 'mt_favorite_color'; $hidden_field_name = 'mt_submit_hidden'; $data_field_name = 'mt_favorite_color'; // Read in existing option value from database $opt_val = get_option( $opt_name ); // See if the user has posted us some information // If they did, this hidden field will be set to 'Y' if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) { // Read their posted value $opt_val = $_POST[ $data_field_name ]; // Save the posted value in the database update_option( $opt_name, $opt_val ); // Put a "Settings updated" message on the screen ?> <div class="updated"></div> <div class="wrap"> <?php // Header echo "<h2>" . __( 'Menu Test Settings', 'menu-test' ) . "</h2>"; // Settings form ?> <form action="" method="post" name="form1"></form> <?php _e("Favorite Color:", 'menu-test' ); ?> <hr /> </div> <?php } ?> ``` 幾個注釋: - WordPress函數(如add_menu_page()和add_submenu_page())具有一個功能,用于確定是否顯示頂級或子級菜單。 - 掛接以處理頁面輸出的功能必須檢查用戶是否具有所需的功能。 - WordPress管理功能負責驗證用戶登錄,因此您不必擔心您的功能。 - 上述功能示例已被國際化 - 有關詳細信息,請參閱I18n for WordPress開發人員。 - 在將數據輸入表單放在屏幕上之前,該函數將處理任何輸入的數據,以便新值將以表單(而不是數據庫的值)顯示。 - 您不必擔心這是第一次工作,因為WordPress update_option函數會自動向數據庫添加一個選項,如果它不存在。 - 這些管理菜單添加過程將在您每次導航到管理員中的頁面時進行解析。因此,如果您正在撰寫一個沒有選項頁面的主題,但稍后添加一個主題,您可以使用上面的說明添加它,并重新上傳,并調整,直到您滿意為止。換句話說,菜單在激活主題時不會“永久添加”或放入數據庫。他們在飛行中解析,所以您可以隨意添加或減少菜單項,重新上傳,更改將立即反映。 ## 頁鉤子后綴 添加新管理菜單的每個功能 - add_menu_page(),add_submenu_page()及其專門版本(如add_options_page())返回一個名為“頁面鉤子后綴”的特殊值。 它可以稍后用作掛鉤,只能在該特定頁面上調用一個動作。 一個這樣的動作鉤子是load-{page_hook},其中{page_hook}是這些add _ * _ page()函數之一返回的值。 當加載特定頁面時調用此鉤子。 在下面的示例中,它用于在所有管理頁面上顯示“主題未配置”通知,但插件的選項頁面除外: ``` <?php add_action('admin_menu', 'my_menu'); // Here you can check if plugin is configured (e.g. check if some option is set). If not, add new hook. // In this example hook is always added. add_action( 'admin_notices', 'my_admin_notices' ); function my_menu() { // Add the new admin menu and page and save the returned hook suffix $hook_suffix = add_options_page('My Options', 'My Theme', 'manage_options', 'my-unique-identifier', 'my_options'); // Use the hook suffix to compose the hook and register an action executed when plugin's options page is loaded add_action( 'load-' . $hook_suffix , 'my_load_function' ); } function my_load_function() { // Current admin page is the options page for our plugin, so do not display the notice // (remove the action responsible for this) remove_action( 'admin_notices', 'my_admin_notices' ); } function my_admin_notices() { echo '<pre> <div class="updated fade" id="notice"> My Plugin is not configured yet. Please do it now.</div> </pre>'; } function my_options() { if (!current_user_can('manage_options')) { wp_die( __('You do not have sufficient permissions to access this page.') ); } echo '</pre> <div class="wrap">'; echo 'Here is where the form would go if I actually had options.'; echo '</div> <pre> '; } ?> ``` ## 資源 關于wp-hackers的頂級菜單討論 管理員菜單編輯器插件
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看