簡體   English   中英

WordPress自定義選項頁面

[英]WordPress custom options page

我需要在WordPress中創建一個選項頁面,該頁面允許為同一鍵輸入多個值。 為了使其按我想要的方式工作,我需要對選項表單發送的$ _POST數據進行一些自定義處理。 我還需要使用自定義HTML創建該“選項”表單,並且不要讓Settings API生成該表單。

制作選項頁面的正常過程是使用add_options_page()注冊選項頁面,注冊設置並讓WordPress使用do_settings_sections()為您生成表單。 然后, <form>標記具有屬性action="options.php"

我的問題是:我可以更改其工作方式嗎? 例如,我可以使回調看起來像這樣:

<?php
add_options_page( 
    'My plugin Options', 
    'My plugin Options', 
    'administrator', 
    'MYPLUGIN_plugin_options', 
    'MYPLUGIN_options' 
);

function MYPLUGIN_options()
{
    if ( 'update' == $_POST['action'] ) // Do some updating
    else // Generate form
}

這行得通嗎? 這是實現我想要的一種可接受的方式嗎? 如果沒有,我還能怎么做? 我無法在WordPress文檔中找到執行此操作的“合法”方法。 也許你們其中之一找到了它。

我不知道這是否真的是您要尋找的答案。 該腳本創建一個插件index.php和parameter-options.php。 index.php添加了一個名為“您的選項-頁面名稱”的新頁面以用鼠標點擊設置選項卡。 您可以在此處通過向表單添加新的輸入值來管理選項。 您應該使用自己的項目名稱替換大寫的NAMESPACE文本。 另外:此腳本未經測試。

plugindir / yourpluginname / index.php

   /*
Plugin Name: Your options page
Plugin URI: http://www.yourdomain.de
Description: descriptiontext
Author: authorname
Version: v1.0
Author URI: your uri
  */


 if( ! function_exists('NAMESPACE_add_admin_menu_items')):
    function NAMESPACE_add_admin_menu_items() {

    // add parameter options page to wp admin
    add_options_page('Your options-pagename', 'Parameter', 'manage_options', 'NAMESPACE-parameter-settings', 'NAMESPACE_display_parameter_options_page');
}

endif;

 add_action('admin_menu', 'NAMESPACE_add_admin_menu_items');

 if( ! function_exists('NAMESPACE_display_parameter_options_page') ):

function NAMESPACE_display_parameter_options_page() {
    require_once 'parameter-options.php';
}

endif;

plugindir / yourpluginname / parameter-options.php

$aPosts = $_POST;
if( ! empty($aPosts)) {

    foreach($aPosts as $cKey => $aPost) {
        update_option($cKey, $aPost);
    }

}
 <div class="wrap nosubsub">
<div class="icon32" id="icon-edit"><br></div>
<h2><?php echo __('Hello, i am the optionspage', 'NAMESPACE'); ?></h2>

<form method="post">
    <table class="form-table">
        <tbody>
            <?php
                $aYourOptionsArray = get_option('YourOptionsArray');
            ?>
            <tr valign="top">
                <th scope="row" colspan="2"><b><?php echo __('Some Description', 'NAMESPACE'); ?></b></th>
            </tr>
            <tr valign="top">
                <th scope="row"><?php echo __('Value 1', 'NAMESPACE'); ?></th>
                <td><input name="YourOptionsArray[value_1]" class="regular-text" type="text" value="<?php echo (isset($aYourOptionsArray['value_1']) ? $aYourOptionsArray['value_1'] : ''); ?>" /></td>
            </tr>
            <tr valign="top">
                <th scope="row"><?php echo __('Value 2', 'NAMESPACE'); ?></th>
                <td><input name="YourOptionsArray[value_2]" class="regular-text" type="text" value="<?php echo (isset($aYourOptionsArray['value_2']) ? $aYourOptionsArray['value_2'] : ''); ?>" /></td>
            </tr>
                            <!-- more options here -->
             </table>
       </form>
   </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM