What is the pencil icon ?
The pencil icon is a new add on for themes in WordPress. In simpler terms it’s that pencil icon you see in the TwentySevenTeen Theme. It is a nifty way to give users information on which section they are customizing. It also only refreshes that particular section.
Here’s a small tutorial on how to add your very own.
/* Customizer fields */
function your_customizer_settings($wp_customize) {
$wp_customize->add_section('footer_section', array(
'title' => __('Footer Section', 'healthtech'),
'panel' =>'',
));
/*
* Settings for copyright text
*/
$wp_customize->add_section('footer_section', array(
'title' =>__('Footer Section', 'healthtech'),
'panel' =>'',
));
/*
* Settings for copyright text
*/
$wp_customize->add_setting('copyright_text', array(
'default' => '2342',
'transport' => 'postMessage'
));
$wp_customize->add_control(new WP_Customize_Control($wp_customize, 'copyright_text', array(
'label' => __('Copyright Text', 'healthtech'),
'section' => 'footer_section',
'settings' => 'copyright_text',
)
)
);
$wp_customize->selective_refresh->add_partial('copyright_text', array(
'selector' => 'span#copy-write', // You can also select a css class
'render_callback' => 'check_copy_right_text',
));
}
// Customizer action
add_action('customize_register', 'your_customizer_settings');
function check_copy_right_text(){
echo get_theme_mod('copyright_text');
}
and put this in the front-end since its a copyright text lets assume footer.php:
<span id="copy-write"><?php check_copy_right_text(); ?></span>
if you go to the customizer you should see the Edit Shortcut Button like this:

if not you will have to add a bit of CSS to position better the button. You can add that CSS to style.css or create a CSS file only for correcting the buttons if you have more buttons that need CSS. Remember to use add_action( 'customize_preview_init', 'my_function_with_wp_enqueue_with_my_css_only_for_the_customizer' );
I added an extra value in the setting:
$wp_customize->;add_setting('copyright_text', array(
'default' => '2342',
'transport' => 'postMessage' //this one
));
If you don’t set transport to postMessage the entire preview will reload since it will default to refresh, this way only that placement (that is what is called the part of a selective refresh) will update.
Great post! Really help full.
Glad to know you found it helpful 🙂