web-dev-qa-db-fra.com

Travailler avec un tableau dans votre tableau d'options de thème - Plusieurs valeurs

Je m'excuse si cela est largement couvert ailleurs, je ne suis pas sûr de savoir comment énoncer mes recherches sur le sujet.

Fondamentalement, au lieu du code standard suivant pour stocker des données dans WP-options ...

$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"),
);

Je voudrais plutôt stocker plusieurs valeurs dans la partie "std", avec son propre tableau - comme ceci:

    $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"),
        );

Je suppose que cela est autorisé, mais étant donné que c'est le cas, je ne sais pas comment:

1) Sachez quel nom/id utiliser sur les entrées de formulaire admin pour indiquer la taille, le "visage" et la "couleur".

Par exemple, dans le code standard sans le tableau multidimensionnel, j'utiliserais généralement un code comme celui-ci:

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

Je ne suis pas sûr de ce qu'il faut placer dans les sections "name" et "id" pour l'entrée.

2) Comment pourrais-je récupérer ces valeurs dans le thème WP? J'utilise habituellement un code comme celui-ci:

// 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; ?>;}

Toute aide est grandement appréciée! Si quelqu'un a des idées ou connaît des tutoriels sur ce sujet, ce serait excellent! Je vous remercie!

1
LearnWebCode

En supposant que ce tableau soit un exemple d'utilisation:

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

Pour la question 1, pour faire référence à des tableaux imbriqués, il suffit de les référencer directement.

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

Dans le formulaire de saisie, si vous utilisez l’API de paramètres :

name="mytheme_options[std][size]"

En ce qui concerne la question 2, il me semble que vous avez probablement mal agi, le peu de code que vous avez n’ayant aucun sens. Qu'est-ce que get_option($value['id'], $value['std']); est supposé faire de toute façon?

Vous obtiendrez votre tableau d'options de la base de données comme ceci:

$options = get_option('mytheme_options');

Les options individuelles seraient alors comme $options['name'] ou $options['std']['face'] ou quoi encore.

4
Otto