Est-il possible de passer la valeur d'un champ de personnalisation dans une variable functions.php?
Je souhaite fournir une option de langue pour les onglets WooCommerce personnalisés. Actuellement, les en-têtes des onglets sont codés en dur dans le fichier functions.php. Après avoir supprimé les onglets par défaut, j'ajoute ce qui suit:
add_filter( 'woocommerce_product_tabs', 'downloads_tab' );
if ( ! function_exists ( 'downloads_tab' ) ) {
function downloads_tab( $tabs ) {
// ensure ACF is available
if ( !function_exists( 'have_rows' ) )
return;
if ( get_field('downloads') ) {
$tabs['downloads_tab'] = array(
'title' => __( 'Downloads', 'woocommerce' ),
'priority' => 60,
'callback' => 'woo_downloads_tab_content'
);
}
return $tabs;
}
}
Dans customizer.php (le thème est basé sur UnderStrap), j'ai:
// Product Downloads Tab Setting
$wp_customize->add_setting( 'product-downloads-tab', array( 'default' => '' ) );
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'product-downloads-tab', array( 'label' => __( 'Product "Downloads" tab text', 'theme-name' ), 'section' => 'language-options', 'settings' => 'product-downloads-tab', ) ) );
Puis-je utiliser la valeur de tout ce qui est entré ici au lieu de coder en dur le titre de l'onglet dans functions.php?
Ma solution consiste à remplacer la fonction dans le fichier functions.php du thème de l'enfant, mais je préfère donner au client la possibilité de définir le titre de l'onglet.
Bien sûr, chaque paramètre du personnaliseur est enregistré en tant que mod de thème (par défaut) ou en tant qu’option (si vous définissez le "type" sur "option" dans $wp_customize->add_setting()
).
Vous pouvez accéder à la valeur définie par l'utilisateur à l'aide de get_theme_mod()
(ou get_option()
) .
Dans votre exemple, la valeur que vous recherchez peut être récupérée avec:
$downloads_tab_text = get_theme_mod( 'product-downloads-tab' );