Поэтому я пытаюсь построить условный оператор для отображения разных макетов в зависимости от выбранной опции.
Немного неприятностей.
$wp_customize->add_setting('layout', array(
'default' => 'stream',
)); // add our default setting.
$wp_customize->add_control('layout', array(
'label' => __('Select layout', 'Ari'),
'section' => 'layout',
'settings' => 'layout',
'type' => 'radio',
'choices' => array(
'stream' => 'Stream',
'grid' => 'Grid',
),
)); // use radio buttons with (so far) two choices.
$wp_customize->add_section('layout' , array(
'title' => __('Layout','Ari'),
)); // add our layout section in the customize panel.
Отображение нашего макета.
<?php if ( get_theme_mod( 'stream' ) ) : ?>
<p>stream</p> if ( have_posts() ) etc
<?php elseif ( get_theme_mod( 'grid' ) ) : ?>
<p>grid</p> // if ( have_posts() ) etc
<?php else : //Nothing ?>
<?php endif; ?>
Совсем ничего. Я просмотрел кодекс и не вижу, что делаю не так. Это просто не показывает никакого выхода.
@Stewartside указывает, что я должен использовать get_setting, но я не могу заставить это работать. Кто-нибудь?
get_theme_mod()
возвращает строку, а не логическое значение. Поэтому ваш if
заявления всегда потерпят неудачу, поскольку они ожидают либо 1
или же true
или же 0
или же false
,
Вы должны посмотреть на использование get_setting
в пределах $wp_customize
функциональность.
Других решений пока нет …