如何从多维数组更新wordpress选项

时间:2012-01-26 19:03:57

标签: arrays wordpress multidimensional-array options

我正在为wordrpess创建一个主题,我想为主题设置添加一个选项管理页面。不能让我的大脑与这个过程一起工作。继承我的代码:

$option_settings = (array(
                array('Section1', array(
                    array(  'ID'=>'id_name1', 
                            'Label'=>'Title1', 
                            'Value'=>'The title1 bar',
                            'Desc'=>'Description Goes Here1',
                            'Type'=>'input_text',
                            'Button'=>'upload'
                    ),
                array('Section2', array(
                    array(  'ID'=>'id_name2', 
                            'Label'=>'Title2', 
                            'Value'=>'The title2 bar',
                            'Desc'=>'Description Goes Here2',
                            'Type'=>'input_text',
                            'Button'=>'upload'
                    ),
                ))
));

if (!get_option('my_option_settings')) {
add_option('my_option_settings',$option_settings);
}

$options = get_option('my_option_settings');

if ($_REQUEST['save_settings']) {

//this is where my brain snaps huhu 

}

echo '<form method="post" action="index.php" id="form_settings">';
echo '<p class="submit message"><input type="submit" value="Save Changes" name="save_settings" /></p>';
foreach ($options as $section) {
echo '<h3>'.$section[0].'</h3>';
foreach ($section[1] as $option => $value) {
    switch($value['Type']) {
        case "input_text":
            echo '<p><strong>'.$value[Label].'</strong> <input type="text" name="'.$value['ID'].'" id="'.$value['ID'].'" value="'.$value['Value'].'" /></p>';
            break;
    }

}
echo '</form>';

我主要关心的是如何在数组中编辑数组以及如何传递thru请求。任何帮助非常感谢提前感谢。

更新了问题:

好吧,我们可以说$ option-settings是来自wordpress的options数据库的内容。原因是我想在wordpress数据库中只有1个选项,只需将它们存储到数组中以获得更多的组织数据。

首先获取值并将其分配给变量:

$fetchOption = get_option('my_option_settings');

现在我将编辑或更新$ fetchOption变量中的数组。

foreach ($options as $section) {
    foreach ($section[1] as $option => $value) {
        $value['Value'] = [$_POST[$value['ID']]];

    }

}

最后是如何将更改后的值放回$ fetchOption变量,并使用update_options('my_option_settings',$ fetchOption)更新数据库。

这是否合适?最新的做法是什么?我可以将它们分配给1个选项,但我认为它有点混乱。再次感谢!

3 个答案:

答案 0 :(得分:3)

嗯。我真的希望你已经找到了答案,但是......因为有人可能需要这些信息我想在这里添加。

首先,link到资源。

然后,我正在使用的答案作为“来源”:

  

就WordPress而言 - 您的多维数组是一个选项。

     

要更新多维数组的一部分,以便检索整个数组,相应地更改它,然后更新整个数组。

     

假设您的多维数组如下:

my_options = array(
  'option_a'=>'value_a',
  'option_b'=>'value_b',
  'inner_array'=>array(
       'foo' => 'bar',
       'hello' => 'world',
   ),
  'option_c'=>'value_c'
)
     

并且假设您想要将'hello'选项的值从'world'更新为'moon'

//Get entire array
$my_options = get_option('my_options');

//Alter the options array appropriately
$my_options['inner_array']['hello'] = 'moon';

//Update entire array
update_option('my_options', $my_options);

希望这有助于Stackoverflow访问者在管理多维数组时使用Wordpress选项:)

答案 1 :(得分:1)

我去过那里并做到了。这是一个帮助我很多的教程! http://net.tutsplus.com/tutorials/wordpress/how-to-create-a-better-wordpress-options-panel/

答案 2 :(得分:0)

此示例可以为您提供帮助;

<div class="ui grid">
    <div class="four wide column">
        <?php


        if (isset($_POST)) {
            if (isset($_POST['location']) && !empty($_POST['location'])) {

                $locationArray = [];
                // this line of code checks if the option is an array or not

                $locationArray  =  is_array(get_option('book_location')) ? get_option('book_location') : [];
                // In case of multidimentional array you can push array to an array
                array_push($locationArray, $_POST['location']);
                // print_r($locationArray);
                update_option('book_location', $locationArray);
            }
        }

        ?>
    </div>

    <div class="eight wide column">
        <form class="ui form" method="post">
            <div class="red card">
                <div class="content">
                    <!-- <div class="header">Bird Name</div>
                        <div class="meta">
                            <span class="category">location</span>
                        </div> -->
                    <div class="description">

                        <div class="field">
                            <label>Location</label>
                            <input type="text" name="location" placeholder="Location Name">
                        </div>


                    </div>
                </div>

                <div class="extra content">
                    <div class="ui divider"></div>
                    <div class="right floated author">
                        <button class="ui button" type="submit">Add Location</button>
                    </div>
                </div>

            </div>
        </form>
    </div>
    <div class="four wide column">

    </div>
</div>