2014-10-22 1 views
1

Я работаю над добавлением некоторых функций на уже существующий сайт WordPress. Этот сайт не был написан мной, я просто настраиваю уже существующий код.Создание пользовательского поля для работы с изображениями - WordPress

Я пытаюсь добавить изображение, которое находится над некоторыми выпадающими аккордеонами на одном из наших шаблонов. Я смог добавить настраиваемое поле в файл custom_fields.php, и он появляется на стороне администратора WP, но я не могу понять, как сделать изображение отображаемым в браузере.

Изображение Я пытаюсь добавить я назвать "accordion_image"

Пользовательские поля:

Carbon_Container::factory('custom_fields', __('Info Page Titles', 'domain')) 
    ->show_on_post_type('page') 
    ->show_on_template('template-info.php') 
    ->add_fields(array(
     Carbon_Field::factory('text', 'info_subtitle'), 
    )); 

Carbon_Container::factory('custom_fields', __('Accordions Section', 'domain')) 
    ->show_on_post_type('page') 
    ->show_on_template('template-info.php') 
    ->add_fields(array(
     Carbon_Field::factory('text', 'acc_section_title', 'Section Title'), 
     Carbon_Field::factory('complex', 'accordions') 
      ->add_fields(array(
       Carbon_Field::factory('text', 'accordions_title'), 
       Carbon_Field::factory('complex', 'accordion') 
        ->add_fields(array(
      Carbon_Field::factory('attachment', 'accordion_image') 
       ->set_required(true), 
         Carbon_Field::factory('text', 'accordion_head') 
          ->set_required(true), 
         Carbon_Field::factory('textarea', 'accordion_content') 
          ->set_required(true), 
        )), 
      )), 
    )); 

Разметка из шаблона:

  <?php 
      $acc_section_title = carbon_get_the_post_meta('acc_section_title'); 
      $section_accordions = carbon_get_the_post_meta('accordions', 'complex'); 

      if (!empty($section_accordions) && is_array($section_accordions)): ?> 
       <div class="col-right"> 
        <?php if ($acc_section_title): ?> 
         <h4><?php echo esc_html($acc_section_title); ?></h4> 
        <?php endif ?> 

        <div class="faq">      
         <?php foreach ($section_accordions as $counter => $accordions): 
          $accordions_title = $accordions['accordions_title']; 

          if ($accordions_title): ?> 
           <h5><?php echo esc_html($accordions_title) ?></h5> 
          <?php endif ?> 

          <?php if (!empty($accordions['accordion']) && is_array($accordions['accordion'])): ?> 
           <div class="accordion"> 
            <?php foreach ($accordions['accordion'] as $acc_counter => $accordion): ?> 
             <div class="accordion-section"> 
             <?php 
        $accordion_image = $accordion['accordion_image']; 
             $accordion_head = $accordion['accordion_head']; 
             $accordion_content = $accordion['accordion_content']; 

        if ($accordion_image): ?> 
        <div class="accordion-img"> 
         <?php echo esc_html($accordion_image) ?> 
        </div><!-- /.accordion-img --> 
        <?php endif ?> 


             if ($accordion_head): ?> 
              <div class="accordion-head"> 
               <?php echo esc_html($accordion_head) ?> 
              </div><!-- /.accordion-head --> 
             <?php endif ?> 

             <?php if ($accordion_content): ?> 
              <div class="accordion-body"> 
               <?php echo wpautop($accordion_content); ?> 
              </div><!-- /.accordion-body --> 
             <?php endif ?> 
             </div><!-- /.accordion-section --> 
            <?php endforeach ?> 
           </div><!-- /.accordion --> 
          <?php endif ?> 
         <?php endforeach ?> 
        </div><!-- /.faq --> 
       </div><!-- /.col-right --> 
      <?php endif ?> 

Я просто Изучаем PHP, поэтому я извиняюсь, если это глупый вопрос. Спасибо за помощь!

+0

Что «Carbon» все? – rnevius

+0

Это своего рода мета-библиотека, которую использовали эти разработчики: Углеродные поля - это библиотека для легкого создания пользовательских (мета) полей в панели администрирования WordPress. Это позволяет разработчику темы связывать метаинформацию с различными объектами на сайте WordPress (например, сообщения, таксономические условия, виджеты и т. Д.). – eloist

+0

Показаны ли аккордеоны? Это просто 'acc_section_title', что нет? – rnevius

ответ

1

Похоже, проблема связана с проблемой синтаксиса ... и простой проблемой, когда вы повторяете идентификатор изображения, но не выводите изображение самостоятельно. Вместо echo esc_html($accordion_image);, вы хотите использовать wp_get_attachment_image() function к echo wp_get_attachment_image(esc_html($accordion_image), 'full'); так:

$acc_section_title = carbon_get_the_post_meta('acc_section_title'); 
$section_accordions = carbon_get_the_post_meta('accordions', 'complex'); 

if (!empty($section_accordions) && is_array($section_accordions)): ?> 
    <div class="col-right"> 
     <?php if ($acc_section_title): ?> 
      <h4><?php echo esc_html($acc_section_title); ?></h4> 
     <?php endif; ?> 

     <div class="faq">      
      <?php foreach ($section_accordions as $counter => $accordions): 
       $accordions_title = $accordions['accordions_title']; 

       if ($accordions_title): ?> 
        <h5><?php echo esc_html($accordions_title); ?></h5> 
       <?php endif; ?> 

       <?php if (!empty($accordions['accordion']) && is_array($accordions['accordion'])): ?> 
        <div class="accordion"> 
         <?php foreach ($accordions['accordion'] as $acc_counter => $accordion): ?> 
          <div class="accordion-section"> 
           <?php 
           $accordion_image = $accordion['accordion_image']; 
           $accordion_head = $accordion['accordion_head']; 
           $accordion_content = $accordion['accordion_content']; 

           if ($accordion_image): ?> 
            <div class="accordion-img"> 
             <?php echo wp_get_attachment_image(esc_html($accordion_image), 'full'); ?> 
            </div><!-- /.accordion-img --> 
           <?php endif; ?> 

           <?php if ($accordion_head): ?> 
            <div class="accordion-head"> 
             <?php echo esc_html($accordion_head); ?> 
            </div><!-- /.accordion-head --> 
           <?php endif; ?> 

           <?php if ($accordion_content): ?> 
            <div class="accordion-body"> 
             <?php echo wpautop($accordion_content); ?> 
            </div><!-- /.accordion-body --> 
           <?php endif; ?> 
          </div><!-- /.accordion-section --> 
         <?php endforeach; ?> 
        </div><!-- /.accordion --> 
      <?php endif; endforeach; ?> 
     </div><!-- /.faq --> 
    </div><!-- /.col-right --> 
<?php endif; ?>