/** * Register settings‘ input fields. * * @since 1.0.0 * @return void */ function cce_register_settings() { if (false == get_option('cce_options')) { add_option('cce_options'); } foreach (cce_get_registered_settings() as $tab => $settings) { add_settings_section('cce_settings_' . $tab, __return_null(), '__return_false', 'cce_settings_' . $tab); foreach ($settings as $option) { add_settings_field('cce_settings[' . $option['id'] . ']', '<label for="cce_settings_' . $tab . '[' . $option['id'] . ']">' . $option['name'] . '</label>', function_exists('cce_' . $option['type'] . '_callback') ? 'cce_' . $option['type'] . '_callback' : 'cce_missing_callback', 'cce_settings_' . $tab, 'cce_settings_' . $tab, array('id' => $option['id'], 'desc' => !empty($option['desc']) ? $option['desc'] : '', 'placeholder' => !empty($option['placeholder']) ? $option['placeholder'] : '', 'name' => $option['name'], 'section' => $tab, 'size' => isset($option['size']) ? $option['size'] : null, 'options' => isset($option['options']) ? $option['options'] : '', 'std' => isset($option['std']) ? $option['std'] : '')); } } register_setting('cce_options', 'cce_options', 'cce_settings_sanitize'); }
function cce_social($atts) { $args = shortcode_atts(array('id' => 'all', 'style' => 'normal'), $atts, 'cce_social'); $registered_settings = cce_get_registered_settings(); $social_urls = array_keys($registered_settings['social']); $settings = get_option('cce_options'); $output = '<div class="cce-social-icons ' . esc_attr($args['style']) . '">'; if ($args['id'] == '' || $args['id'] == 'all') { $social_ids = $social_urls; } else { $social_ids = explode(',', $args['id']); } foreach ($social_ids as $slug) { $slug = trim($slug); if (isset($settings[$slug]) && $settings[$slug] != '') { $class = $slug; if ('mail' == $slug) { $class = 'envelope'; } if ('vimeo' == $slug) { $class = 'vimeo-square'; } $output .= "<a href='" . esc_url($settings[$slug]) . "' target='_blank'><i class='fa fa-" . esc_attr($class) . "'></i></a>"; } } $output .= '</div>'; return $output; }