J'essaie d'ajouter un onglet de paramètres personnalisés à l'écran des paramètres de WooCommerce. Fondamentalement, je souhaite obtenir des fonctionnalités similaires à l'onglet Paramètres du produit via des sous-sections/sous-onglets :
Je n'ai trouvé aucune documentation décente sur la façon de procéder, mais j'ai pu ajouter un onglet personnalisé à l'aide de l'extrait suivant :
class WC_Settings_Tab_Demo { public static function init() { add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 ); } public static function add_settings_tab( $settings_tabs ) { $settings_tabs['test'] = __( 'Settings Demo Tab', 'woocommerce-settings-tab-demo' ); return $settings_tabs; } } WC_Settings_Tab_Demo::init();
Sur la base de ce que j'ai trouvé dans divers fils de discussion/tutoriels, j'ai essayé d'ajouter des sections/sous-onglets à un nouvel onglet de paramètres comme celui-ci :
// creating a new sub tab in API settings add_filter( 'woocommerce_get_sections_test','add_subtab' ); function add_subtab( $sections ) { $sections['custom_settings'] = __( 'Custom Settings', 'woocommerce-custom-settings-tab' ); $sections['more_settings'] = __( 'More Settings', 'woocommerce-custom-settings-tab' ); return $sections; } // adding settings (HTML Form) add_filter( 'woocommerce_get_settings_test', 'add_subtab_settings', 10, 2 ); function add_subtab_settings( $settings, $current_section ) { // $current_section = (isset($_GET['section']) && !empty($_GET['section']))? $_GET['section']:''; if ( $current_section == 'custom_settings' ) { $custom_settings = array(); $custom_settings[] = array( 'name' => __( 'Custom Settings', 'text-domain' ), 'type' => 'title', 'desc' => __( 'The following options are used to ...', 'text-domain' ), 'id' => 'custom_settings' ); $custom_settings[] = array( 'name' => __( 'Field 1', 'text-domain' ), 'id' => 'field_one', 'type' => 'text', 'default' => get_option('field_one'), ); $custom_settings[] = array( 'type' => 'sectionend', 'id' => 'test-options' ); return $custom_settings; } else { // If not, return the standard settings return $settings; } }
J'ai pu ajouter de nouvelles sous-sections à l'onglet Produits en utilisant un code similaire à celui ci-dessus, mais cela ne fonctionne pas avec mon nouvel onglet personnalisé. Où est-ce que je me suis trompé?
1) Pour ajouter un onglet de paramètres avec des sections, vous pouvez d'abord utiliser le
woocommerce_settings_tabs_array
crochet de filtre :2) Pour ajouter une nouvelle section à la page, vous pouvez utiliser
woocommerce_sections_{$current_tab}
复合挂钩,其中{$current_tab}
Doit être remplacé par le slug de clé défini dans la première fonction :'; $array_keys = array_keys( $sections ); foreach ( $sections as $id => $label ) { echo '-
' . $label . ' ' . ( end( $array_keys ) == $id ? '' : '|' ) . '
';
}
echo '
'; } add_action( 'woocommerce_sections_my-custom-tab', 'action_woocommerce_sections_my_custom_tab', 10 );
3)Pour ajouter des paramètres ainsi que le traitement/sauvegarde, nous utiliserons une fonction personnalisée puis appellerons cette fonction :
3.1) Ajouter des paramètres via
woocommerce_settings_{$current_tab}
crochet composé :3.2) Gérer/enregistrer les paramètres via
woocommerce_settings_save_{$current_tab}
crochet composé :Résultat :
Basé sur :