Support

Account

Home Forums Add-ons Flexible Content Field Flexible Content in the Widget Reply To: Flexible Content in the Widget

  • Figured it out on my own. Putting this here in case it helps someone. The following uses both a repeater field and flexible content in the widget.

      function my_dynamic_sidebar_params( $params ) {
        
        // get widget vars
        $widget_name = $params[0]['widget_name'];
        $widget_id = $params[0]['widget_id'];
        
        
        // bail early if this widget is not a Text widget
        if( $widget_name != 'Text' ) {
          
          return $params;
          
        }
        
        
        //add content to widget
        $content_type = get_field('content_type', 'widget_' . $widget_id);
    
        
        if( $content_type == 'important_links' ) {
          
           ?>
          <?php $params[0]['after_title'] .= '<ul>' ?> 
            <?php while(the_flexible_field("important_links", 'widget_' . $widget_id)): ?>
    
              <?php if(get_row_layout() == "file"): // layout: file 
                //vars
                $file_link_text = get_sub_field('file_link_text', 'widget_' . $widget_id);
                $file = get_sub_field('file', 'widget_' . $widget_id);
                $file_type = get_sub_field('file_type', 'widget_' . $widget_id);
    
              ?>            
    
                <?php $params[0]['after_title'] .= sprintf('<li><a href="%s" class="is-%s">%s</a></li>', $file['url'], $file_type, $file_link_text) ?>
    
              <?php elseif(get_row_layout() == "link"): // layout: link 
    
                $link_text = get_sub_field('link_text', 'widget_' . $widget_id); 
                $url = get_sub_field('url', 'widget_' . $widget_id); 
    
              ?>
                  <?php $params[0]['after_title'] .= sprintf('<li><a href="%s">%s</a></li>', $url, $link_text) ?>
                  
    
              <?php endif; ?>
    
            <?php endwhile; ?>
          <?php $params[0]['after_title'] .= '</ul>' ?> 
          
        <?php }
    
        if( $content_type == 'contacts' ) { ?>      
          
          <?php if( have_rows('contacts', 'widget_' . $widget_id) ): ?>
            <?php $params[0]['after_title'] .= '<ul>' ?>        
                
                <?php while( have_rows('contacts', 'widget_' . $widget_id) ): the_row(); 
    
                  // vars
                  $contact_name = get_sub_field('contact_name', 'widget_' . $widget_id);
                  $contact_title = get_sub_field('contact_title', 'widget_' . $widget_id);
                  $contact_phone = get_sub_field('contact_phone', 'widget_' . $widget_id);
                  $contact_email = get_sub_field('contact_email', 'widget_' . $widget_id);
                  $tel = preg_replace("/[^A-Za-z0-9]/", "", $contact_phone);
    
                ?>
                  
                  <?php $params[0]['after_title'] .= sprintf('<li><header><h4>%s</h4>', $contact_name) ?>
                  <?php $params[0]['after_title'] .= sprintf('<h5>%s</h5></header><p>', $contact_title) ?>              
                  <?php $params[0]['after_title'] .= sprintf('<a class="tel" href="tel:%s">%s</a><br />', $tel, $contact_phone) ?>
                  <?php $params[0]['after_title'] .= sprintf('<a class="email" href="mailto:%s">%s</a></p></li>', $contact_email, $contact_email) ?>              
    
                <?php endwhile; ?>
              
            <?php $params[0]['after_title'] .= '</ul>' ?>     
            
    
          <?php endif; 
          
          
          
        }
        // return
        return $params;
    
      }
    add_filter('dynamic_sidebar_params', 'my_dynamic_sidebar_params');