it-swarm.com.ru

Wordpress?

Я пытаюсь скрыть или показать настройки настройщика в зависимости от того, какую страницу я просматриваю, похожую на active_callback' => 'is_front_page', однако я не нашел способа доступа к идентификатору текущей страницы из моего файла customizer.php. Я хочу иметь возможность использовать active_callback' => 'is_specific_page' через пользовательский обратный вызов на основе идентификатора текущей страницы, например:

 
 function is_specific_page () {
 
 // ЛОГИКА ВОЗВРАЩАЕТСЯ ИСТИНА OR ЛОЖЬ В ЗАВИСИМОСТИ ОТ ТЕКУЩЕЙ СТРАНИЦЫ 
 
 } 
 

Я пытался использовать все следующее безрезультатно:

global $post; $post->ID();

global $wp_query; $post_id = $wp_query->post->ID;

get_the_ID();

Спасибо заранее за вашу помощь!

1
Alex E.

Спасибо за ваш вопрос.

active_callback это именно то, что вы ищете. Вы можете использовать его с элементами управления:

$wp_customizer->add_control(
    'setting_name',
    array(
        'type' => 'text',
        'section' => 'section_name',
        'label' => 'Option with context',
        'active_callback' => 'is_front_page'
    )
);

и с разделами:

$wp_customize->add_section(
    'section-name',
    array(                                             
        'title' => 'Section with context',
        'active_callback' => 'is_front_page'
     )
);

В приведенных выше примерах эта новая настройка/раздел будет видна только для первой страницы благодаря встроенной функции is_front_page. Вы также можете использовать другие условные теги.

Но, конечно, вы можете создавать свои собственные контексты:

function mytheme_is_contact_page() {
    return is_page_template( 'template-contact.php' );
}

function mytheme_is_page_id_123() {
    return is_page( 123 );
}
1
Krzysiek Dróżdż