web-dev-qa-db-fra.com

Pourquoi get_theme_mod renvoie-t-il un blanc (ou une valeur par défaut) alors que get_option renvoie une valeur enregistrée?

Pourquoi get_theme_mod renvoie-t-il un blanc (ou la valeur par défaut si spécifié) alors que get_option renvoie la valeur correcte (enregistrée)?

J'ai un sélecteur de couleur dans le programme de personnalisation color-primary qui fonctionne correctement et enregistre la valeur sélectionnée dans la base de données. Cependant, get_theme_mod renvoie un champ vide alors que get_option renvoie la valeur enregistrée.

echo get_option('color-primary'); //returns saved value
echo get_theme_mod('color-primary'); // returns blank
echo get_theme_mod('color-primary', '#fafafa'); // returns default value
2
mistertaylor

C'est le code original de wordpress:

function get_theme_mods()
{
    $theme_slug = get_option('stylesheet');
    $mods = get_option("theme_mods_$theme_slug");
    if (false === $mods)
    {
        $theme_name = get_option('current_theme');
        if (false === $theme_name)
            $theme_name = wp_get_theme()->get('Name');
        $mods = get_option("mods_$theme_name"); // Deprecated location.
        if (is_admin() && false !== $mods)
        {
            update_option("theme_mods_$theme_slug", $mods);
            delete_option("mods_$theme_name");
        }
    }

    return $mods;
}

function get_theme_mods()
{
    $theme_slug = get_option('stylesheet');
    $mods = get_option("theme_mods_$theme_slug");
    if (false === $mods)
    {
        $theme_name = get_option('current_theme');
        if (false === $theme_name)
            $theme_name = wp_get_theme()->get('Name');
        $mods = get_option("mods_$theme_name"); // Deprecated location.
        if (is_admin() && false !== $mods)
        {
            update_option("theme_mods_$theme_slug", $mods);
            delete_option("mods_$theme_name");
        }
    }

    return $mods;
}

Comme vous pouvez le constater, get_theme_mods utilise get_option, mais il n'utilise pas la clé que vous avez fournie pour enregistrer vos données, mais utilise votre nom de thème comme clé pour extraire ou enregistrer vos données de thème. Maintenant, si vous récupérez des données avec get_theme_mod(), il va commencer par get_option("theme_mods_$yourthemename"), puis il analysera la valeur renvoyée à l'emplacement actuel des options de votre thème enregistré.

1
Marttin Notta