web-dev-qa-db-ja.com

テーマオプション配列内の配列の操作 - 複数値

これが他の場所で広範囲にカバーされている場合は申し訳ありませんが、トピックに対する検索のフレーズ付け方法がわかりません。

基本的に、WPオプションにデータを保存するための以下の標準コードの代わりに...

$options = array (
array("name" => __('Font','mytheme'),
    "desc" => __('Change the font face)','mytheme'),
    "id" => "mytheme_font",
    "std" => "Arial",
    "type" => "text"),
array("name" => __('Alternate Font','mytheme'),
    "desc" => __('Change the alternate font face)','mytheme'),
    "id" => "mytheme_font_alternate",
    "std" => "Tahoma",
    "type" => "text"),
);

代わりに、 "std"部分に独自の配列で複数の値を格納したいと思います。

    $options = array (
        array("name" => __('Font','mytheme'),
            "desc" => __('Change the font face)','mytheme'),
            "id" => "mytheme_font",
            "std" => array('size' => '10px', 'face' => 'Arial', 'color' => '#000000'),
            "type" => "text"),
        array("name" => __('Alternate Font','mytheme'),
            "desc" => __('Change the alternate font face)','mytheme'),
            "id" => "mytheme_font_alternate",
            "std" => array('size' => '13px', 'face' => 'Tahoma', 'color' => '#FF0000'),
            "type" => "text"),
        );

これは許可されていると思いますが、許可されていることを考えれば、私は次のような方法で困っています。

1) "size"、 "face"、 "color"に入ることを意味するために、adminフォームの入力に使用する名前/ IDを知ってください。

たとえば、多次元配列のない標準コードでは、通常次のようなコードを使用します。

<input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="text" value="<?php echo stripslashes(get_option( $value['id'], $value['std'] )); ?>" />

入力用の "name"セクションと "id"セクションに何を入れるべきかわかりません。

2)WPテーマでこれらの値を取得する方法を教えてください。私は通常このようなコードを使います:

// Make values available
global $options;
foreach ($options as $value) {
$$value['id'] = get_option($value['id'], $value['std']);
}

// Print the actual value
<?php echo $mytheme_font; ?>;}

任意の助けは大歓迎です!誰かがこのトピックに関するアイデアを持っていたり、チュートリアルについて知っているのであれば、それは素晴らしいことです。ありがとうございました!

1
LearnWebCode

使用例としてこの配列を想定します。

$options = array(
    "name" => __('Font','mytheme'),
    "desc" => __('Change the font face)','mytheme'),
    "id" => "mytheme_font",
    "std" => array('size' => '10px', 'face' => 'Arial', 'color' => '#000000'),
    "type" => "text",
 );

質問1では、ネストした配列を参照するには、直接それらを参照してください。

echo $options['std']['size'];

フォーム入力で、 設定API を使用する場合:

name="mytheme_options[std][size]"

質問2に関しては、おそらくあなたが一緒にいるのとは間違ってやっているように思われます。 get_option($value['id'], $value['std']);はとにかく何をするはずですか?

このようにデータベースからオプションの配列を取得します。

$options = get_option('mytheme_options');

個々のオプションは$options['name']$options['std']['face']のようになります。

4
Otto