0

Я довольно новичок в php, и я создаю раздел в настройке темы (в пользовательской теме WP), чтобы изменить верхнее изображение баннера. Все, кажется, работает хорошо - параметры отображаются в настройщике, я могу выбирать и загружать изображения и сохранять изменения. Все изменения отображаются в окне настройки темы. Но при обновлении главной страницы все, что я вижу, это то, что находится в index.php за пределами тегов php, которые должны извлекать изображения/текст и т. Д. Ниже приведен код в файле theme-customizer.php (я исключен разделы с указанием кода для добавления текста, как будто я могу получить изображение, чтобы показать остальные должны следовать):Пользовательские настройки параметров темы не отображаются на главной странице

add_action('customize_register', 'k1_customize_register'); 
function k1_customize_register($wp_customize) { 

    // Top Banner Image 
    $wp_customize->add_section('k1_banner', array(
     'title' => __('K1 Top Banner', 'k1-framework'), 
     'description' => __('Allows you to upload a banner image to display underneath the main navigation.', 'k1-framework'), 
     'priority' => 36 
    )); 

// Add setting for checkbox for banner image display 
    $wp_customize->add_setting('k1_custom_settings[display_k1_banner]', array(
     'default' => 0, 
     'type' => 'option' 
    )); 

    // Add control for checkbox for banner image display 
    $wp_customize->add_control('k1_custom_settings[display_k1_banner]', array(
     'label' => __('Display the Top Banner Image?', 'k1-framework'), 
     'section' => 'k1_banner', 
     'settings' => 'k1_custom_settings[display_k1_banner]', 
     'type' => 'checkbox' 
    )); 


    // Add setting for top banner image 
    $wp_customize->add_setting('k1_banner', array(
     'default' => 'http://lorempixel.com/1200/300', 
     'type' => 'theme_mod', 
     'active_callback' => 'is_front_page', 
     'sanitize_callback' => 'esc_url_raw' 
    )); 

    // Add control for top banner image 
    $wp_customize->add_control('k1_banner', array(
     'label' => __('Upload the Top Banner Image', 'k1-framework'), 
     'section' => 'k1_banner' 


    )); 

    // Add setting for banner heading 
    $wp_customize->add_setting('k1_banner_heading', array(
     'default' => 'What can K1 do for you?', 
     'type' => 'theme_mod', 
     'sanitize_callback' => 'sanitize_text_field' 
    )); 

    // Add control for banner heading 
    $wp_customize->add_control('k1_banner_heading', array(
     'label' => __('Banner heading text', 'k1-framework'), 
     'section' => 'k1_banner', 
     'type' => 'text' 
    )); 

    // Add setting for banner description 
    $wp_customize->add_setting('k1_banner_desc', array(
     'default' => 'Lorem ipsum dolor sit amet', 
     'type' => 'theme_mod', 
     'sanitize_callback' => 'sanitize_text_field' 
    )); 

    // Add control for banner description 
    $wp_customize->add_control('k1_banner_desc', array(
     'label' => __('Banner description text', 'k1-framework'), 
     'section' => 'k1_banner', 
     'type' => 'text' 
    )); 

    // Add setting for banner link 
    $wp_customize->add_setting('k1_banner_link', array(
     'default' => '#', 
     'type' => 'theme_mod', 
     'sanitize_callback' => 'esc_url_raw' 
    )); 

    // Add control for banner link 
    $wp_customize->add_control('k1_banner_link', array(
     'label' => __('Banner read more link', 'k1-framework'), 
     'section' => 'k1_banner', 
     'type' => 'text' 
    )); 

    //adding setting for banner link text area 
    $wp_customize->add_setting('k1_banner_link_text', array(
     'default' => 'More', 
     'sanitize_callback' => 'sanitize_text_field' 
    )); 
    $wp_customize->add_control('k1_banner_link_text', array(
     'label' => 'Read more link text here', 
     'section' => 'k1_banner', 
     'type' => 'text', 
    )); 

} 

а вот код в index.php:

И в index.php, где код PHP называется:

<div class="row"> 

     <div class="col-lg-12 top-banner"> 


<?php if($options['display_k1_banner'] != '') : ?> 

      <div class="top-banner-inner"> 


      <img src="<?php echo get_theme_mod('k1_banner'); ?>" alt="Banner image" /> 


       <h1><?php echo get_theme_mod('k1_banner_heading'); ?></h1> 
        <p><?php echo get_theme_mod('k1_banner_desc'); ?></p> 
        <a class="button" href="<?php echo get_theme_mod('k1_banner_link'); ?>"><em><?php echo get_theme_mod('k1_banner_link_text'); ?></em></a> 


      </div> <!-- end top-banner-inner --> 
      <?php endif; ?> 




     </div> <!-- end top-banner --> 

    </div> <!-- end row --> 

оригинальные HTML ВГ прежде чем знамя должно было быть это:

<!-- TOP BANNER --> 

<div class="container"> 

     <div class="row"> 

      <div class="col-lg-12 top-banner"> 

       <div class="top-banner-inner"> 

       <img src="http://lorempixel.com/1200/300" alt="Banner image" /> 
        <h1>Heading text</h1> 
         <p>Lorem ipsum dolor sit amet</p> 
         <a class="button" href=""><em>More</em></a> 



       </div> <!-- end top-banner-inner --> 


      </div> <!-- end top-banner --> 

     </div> <!-- end row --> 

    </div> <!-- end container --> 

Если у кого есть какие-либо идеи о том, как получить эту работу, я очень ценю это.

ответ

0

Я проверил ваш код в своей среде, и кажется, что сам код настройки (первый блок) отлично работает. Проблема заключается только в размещении второго блока. Вы, вероятно, просто имеете это в месте, которое не видно (как я сделал сначала).

Чтобы помочь вам в размещении, необходимо больше информации о том, где именно баннер должен/не должен отображаться.

EDIT:

Самое естественное место, чтобы начать с, чтобы добавить содержимое в нижней части темы header.php. Затем баннер появится всегда в верхней части страницы.

+0

Ах хорошо, я бы отправить ссылку на сайт, но он находится на локальном хосте. Я отредактировал главный вопрос, включив оригинальный html для баннера (который работает без php), если это вообще помогает. – Karen

+0

См. EDIT для обновления. – masa

+0

Спасибо Маса. Я думал об этом, однако баннер появляется только на главной странице (или, по крайней мере, это намерение). Он также отображается под основной навигацией. Немного похоже на изображение слайдера, которое часто отображается на главной странице, но с одним статическим изображением. Поэтому, если это можно было бы назвать в index.php, это было бы идеально. – Karen

0

После изменения исходного кода (с использованием theme_mod вместо опций в первую очередь - см. Отредактированное q выше), я нашел решение для решения проблемы. Случилось то, что значения по умолчанию не сохранялись и не регистрировались. Установив значения по умолчанию непосредственно в index.php, все параметры настройки темы теперь отображаются на главной странице.

Ниже приведен новый код из index.php:

<div class="col-lg-12 top-banner"> 


<?php if($options['display_k1_banner'] != '') : ?> 

      <div class="top-banner-inner"> 


      <img src="<?php echo get_theme_mod('k1_banner', 'http://lorempixel.com/1200/300'); ?>" alt="Banner image" /> 


       <h1><?php echo get_theme_mod('k1_banner_heading', 'What can K1 do for you?'); ?></h1> 
        <p><?php echo get_theme_mod('k1_banner_desc', 'Lorem ipsum dolor sit amet'); ?></p> 
        <a class="button" href="<?php echo get_theme_mod('k1_banner_link', '#'); ?>"><em><?php echo get_theme_mod('k1_banner_link_text', 'More'); ?></em></a> 


      </div> <!-- end top-banner-inner --> 
      <?php endif; ?> 




     </div> <!-- end top-banner --> 
Смежные вопросы