Q:

Задание ссылки в customizer.php для WP темы

Пытаюсь в настройках WP темы вывести сслыку для кнопки.
В customizer.php создаю секцию и параметры:
// Button Text & Link
$wp_customize->add_section( 'button-custom' , array(
        'title' => esc_html__( 'Button', 'my_cat' ),
        'priority' => 20,
        'description' => esc_html__( 'Customize your button', 'my_cat' ),
        'panel'       => 'section-custom'
)); 

// Button Href
    $wp_customize->add_setting( 'my_cat_button-href', array( 
        'capability' => 'edit_theme_options',
        'sanitize_callback' => 'themeslug_sanitize_url',
    )); 
    $wp_customize->add_control( 'my_cat_button-href', array(
    'type' => 'url',
        'label'    => esc_html__( 'Button Href', 'my_cat'),
        'section'  => 'button-custom',
        'settings' => 'my_cat_button-href', 
        'input_attrs' => array(
            'placeholder' => __( 'http://' )
        )
    ));

А в контенте index.php вывод результата:
<a href=" <?php echo wp_kses_post(get_theme_mod( 'my_cat_button-href' )) ?> " class="btn btn-default">Button Text </a>

Пишу адрес для ссылки типа: https://google.com. Выдает - Неверное значение. И не сохраняется.

Вопрос: как правильно задать редактирование (из админки) ссылки (href="") для кнопки в WP теме в customizer.php? Есть ли возможность задать поле для выбора ссылки из существующих в теме, подобно как для меню (т.е. задать например ссылку на страницу поста\статьи)?

A:

У вас, видимо, не опредена callback-функция themeslug_sanitize_url().
Чтобы дать выбор из списка страниц, следует использовать choices с type => radio или type => select. Пример:
$wp_customize->add_control(
    new WP_Customize_Control(
        $wp_customize,
        'your_setting_id',
        array(
            'label'    => __( 'Dark or light theme version?', 'theme_name' ),
            'section'  => 'your_section_id',
            'settings' => 'your_setting_id',
            'type'     => 'radio',
            'choices'  => array(
                'dark'  => __( 'Dark' ),
                'light' => __( 'Light' ),
            ),
        )
    )
);

Подробнее в Codex.

