Я пытаюсь создать пользовательскую функцию, чтобы иметь возможность изменять / загружать новое изображение с панели «Настройка» (это потому, что я не буду управлять сайтом, поэтому я пытаюсь что-то сделать как можно проще).
Я использовал по умолчанию тему adamos (ссылка на сайт) и затем я начал настраивать его для своих целей.
В functions.php Я добавил следующий код:
function gb_theme_customizer( $wp_customize ) {
$wp_customize->add_section( 'gb_logo_section' , array(
'title' => __( 'Gb\'s Logo', 'gb_logo' ),
'priority' => 31,
'description' => 'Upload a new logo for Gb to be displayed above the left menu',
) );
$wp_customize->add_setting(
'gb_logo',
array(
'sanitize_callback' => 'gb_sanitize_upload',
)
);
$wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'gb_logo', array(
'label' => __( 'Gb\'s Logo', 'gb_logo' ),
'section' => 'gb_logo_section',
'settings' => 'gb_logo',
) ) );}
add_action('customize_register', 'gb_theme_customizer');
Это было сделано путем копирования функции по умолчанию темы adamos_theme_customizer, это все еще выше этого (мне нужны обе функции).
Для вызова функции я использовал следующий код:
<!--TEST-->
<?php if ( get_theme_mod('gb_logo') ) : ?>
<div class="test">
<img src="<?php echo get_theme_mod( 'gb_logo' ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>">
</div>
<?php endif; ?>
<br />
Эта функция на самом деле не работает, и я не знаю почему, потому что, если я пытаюсь загрузить изображения, она работает (они загружены, но ни один из этих способов не показан). Попробовав некоторую отладку (см. Код ниже), я обнаружил, что с get_theme_mod WordPress считает, что gb_logo является логической переменной.
<div id="test" style="border: 2px solid black"><?php $mods = get_option('gb_logo');
var_dump($mods);?></div>
Есть идеи о том, как это исправить?
Задача ещё не решена.
Других решений пока нет …