Example #1
0
 function mb_fields()
 {
     // global
     global $post;
     // vars
     $field_group = acf_get_field_group($post);
     // get fields
     $view = array('fields' => acf_get_fields_by_id($field_group['ID']));
     // load view
     acf_get_view('field-group-fields', $view);
 }
function acf_get_fields($parent = false)
{
    // allow $parent to be a field group ID
    if (!is_array($parent)) {
        $parent = acf_get_field_group($parent);
    }
    // bail early if no parent
    if (!$parent) {
        return false;
    }
    // vars
    $fields = array();
    // try JSON before DB to save query time
    if (acf_have_local_fields($parent['key'])) {
        $fields = acf_get_local_fields($parent['key']);
    } else {
        $fields = acf_get_fields_by_id($parent['ID']);
    }
    // filter
    $fields = apply_filters('acf/get_fields', $fields, $parent);
    // return
    return $fields;
}
Example #3
0
function acf_import_field_group($field_group)
{
    // vars
    $ref = array();
    $order = array();
    // extract fields
    $fields = acf_extract_var($field_group, 'fields');
    // format fields
    $fields = acf_prepare_fields_for_import($fields);
    // remove old fields
    if ($field_group['ID']) {
        $db_fields = acf_get_fields_by_id($field_group['ID']);
        $db_fields = acf_prepare_fields_for_import($db_fields);
        // get field keys
        $keys = array();
        foreach ($fields as $field) {
            $keys[] = $field['key'];
        }
        // loop over db fields
        foreach ($db_fields as $field) {
            // add to ref
            $ref[$field['key']] = $field['ID'];
            if (!in_array($field['key'], $keys)) {
                acf_delete_field($field['ID']);
            }
        }
    }
    // save field group
    $field_group = acf_update_field_group($field_group);
    // add to ref
    $ref[$field_group['key']] = $field_group['ID'];
    // add to order
    $order[$field_group['ID']] = 0;
    // add fields
    foreach ($fields as $field) {
        // add ID
        if (!$field['ID'] && isset($ref[$field['key']])) {
            $field['ID'] = $ref[$field['key']];
        }
        // add parent
        if (empty($field['parent'])) {
            $field['parent'] = $field_group['ID'];
        } elseif (isset($ref[$field['parent']])) {
            $field['parent'] = $ref[$field['parent']];
        }
        // add field menu_order
        if (!isset($order[$field['parent']])) {
            $order[$field['parent']] = 0;
        }
        $field['menu_order'] = $order[$field['parent']];
        $order[$field['parent']]++;
        // save field
        $field = acf_update_field($field);
        // add to ref
        $ref[$field['key']] = $field['ID'];
    }
    // return new field group
    return $field_group;
}
Example #4
0
 static function get_the_field($parameters, $id = null)
 {
     $result = '';
     $field = $parameters['field'];
     if (!empty($parameters['id'])) {
         $id = $parameters['id'];
     }
     /*---------------------------------------------
      *
      * Option field
      *
      */
     if (!empty($parameters['option'])) {
         return self::get_option_field($field, $parameters['option']);
     }
     /*---------------------------------------------
      *
      * Attachment field
      *
      */
     if (!empty($parameters['type']) && $parameters['type'] == 'attachment' || CCS_Loop::$state['is_attachment_loop'] || CCS_Attached::$state['is_attachment_loop']) {
         return self::get_the_attachment_field($parameters);
         /*---------------------------------------------
          *
          * Array field
          *
          */
     } elseif (self::$state['is_array_field']) {
         $array = self::$state['current_field_value'];
         if (isset($array[$field])) {
             return $array[$field];
         } elseif ($field == 'value') {
             if (is_array($array)) {
                 $array = implode('', $array);
             }
             return $array;
         }
         // ACF gallery loop
     } elseif (class_exists('CCS_To_ACF') && CCS_To_ACF::$state['is_gallery_loop']) {
         return CCS_To_ACF::get_image_details_from_acf_gallery($parameters);
         /*---------------------------------------------
          *
          * Repeater or flexible content loop
          *
          */
     } elseif (empty($parameters['id']) && empty($parameters['name']) && class_exists('CCS_To_ACF') && CCS_To_ACF::$state['is_repeater_or_flex_loop']) {
         // If not inside relationship loop
         if (!CCS_To_ACF::$state['is_relationship_loop']) {
             // Get sub field
             if (function_exists('get_sub_field')) {
                 return get_sub_field($field);
             } else {
                 return null;
             }
         }
         /*---------------------------------------------
          *
          * Menu loop
          *
          */
     } elseif (CCS_Menu::$state['is_menu_loop']) {
         if (isset(CCS_Menu::$state['current_menu_object'][$field])) {
             return CCS_Menu::$state['current_menu_object'][$field];
         } else {
             if (!isset(CCS_Menu::$state['current_menu_object']['id'])) {
                 return;
             }
             // Get it from the post
             $id = CCS_Menu::$state['current_menu_object']['id'];
             CCS_Menu::$state['is_menu_loop'] = false;
             $result = do_shortcode('[field ' . $field . ' id=' . $id . ']');
             CCS_Menu::$state['is_menu_loop'] = true;
             return $result;
         }
     }
     if (!empty($id)) {
         $post_id = $id;
     } else {
         // Default
         $post_id = get_the_ID();
         /*      global $post;
               if (!empty($post)) {
                 $post_id = $post->ID;
               } */
     }
     if (empty($post_id)) {
         return null;
     }
     // No post ID
     $post = get_post($post_id);
     if (empty($post)) {
         return null;
     }
     // No post
     /*---------------------------------------------
      *
      * Prepare image attributes
      *
      */
     $image_fields = array('image', 'image-full', 'image-link', 'image-link-self', 'thumbnail', 'thumbnail-link', 'thumbnail-link-self', 'gallery');
     if ($field == 'thumbnail' && empty($parameters['size'])) {
         $parameters['size'] = 'thumbnail';
         // Default thumbnail
     }
     $attr = array();
     if (in_array($field, $image_fields)) {
         if (!empty($parameters['width']) || !empty($parameters['height'])) {
             $parameters['size'] = array((int) $parameters['width'], (int) $parameters['height']);
         }
         if (!empty($parameters['image_class'])) {
             $attr['class'] = $parameters['image_class'];
         }
         if (!empty($parameters['nopin'])) {
             $attr['nopin'] = $parameters['nopin'];
         }
         if (!empty($parameters['alt'])) {
             $attr['alt'] = $parameters['alt'];
         }
         //      if (!empty($parameters['title']))
         //        $attr['title'] = $parameters['title'];
     }
     // Custom field only?
     if (!empty($parameters['custom']) && $parameters['custom'] == 'true') {
         $custom = $field;
         $field = 'custom';
         // Skip predefined fields
     }
     /*---------------------------------------------
      *
      * Pre-defined fields
      *
      */
     switch ($field) {
         case 'id':
             $result = $post_id;
             break;
         case 'url':
             $result = get_permalink($post_id);
             break;
         case 'edit-url':
             $result = get_edit_post_link($post_id);
             break;
         case 'edit-link':
             $result = $post->post_title;
             break;
         case 'edit-link-self':
             $result = $post->post_title;
             break;
         case 'slug':
             $result = $post->post_name;
             break;
         case 'post-type':
             $result = $post->post_type;
             break;
         case 'post-type-name':
             $post_type = $post->post_type;
             $obj = get_post_type_object($post_type);
             $result = $obj->labels->singular_name;
             break;
         case 'post-type-plural':
             $post_type = $post->post_type;
             $obj = get_post_type_object($post_type);
             $result = $obj->labels->name;
             break;
         case 'post-status':
             $result = $post->post_status;
             if ($parameters['out'] !== 'slug') {
                 $result = ucwords($result);
             }
             break;
         case 'post-format':
             if (function_exists('get_post_format')) {
                 $result = get_post_format($post_id);
             }
             break;
         case 'post-format-name':
             if (function_exists('get_post_format')) {
                 $result = get_post_format($post_id);
                 $result = ucwords($result);
             }
             break;
         case 'post-format-link':
             if (function_exists('get_post_format')) {
                 $result = get_post_format($post_id);
                 $result = '<a href="' . get_post_format_link($result) . '">' . ucwords($result) . '</a>';
             }
             break;
         case 'post-format-url':
             if (function_exists('get_post_format')) {
                 $result = get_post_format_link(get_post_format($post_id));
             }
             break;
         case 'parent-id':
             $parent_id = isset($post->post_parent) ? $post->post_parent : 0;
             if (!empty($parent_id)) {
                 $result = $parent_id;
             }
             break;
         case 'parent-slug':
             $parent_id = isset($post->post_parent) ? $post->post_parent : 0;
             if (!empty($parent_id)) {
                 $post_data = get_post($parent_id);
                 if (!empty($post_data)) {
                     $result = isset($post_data->post_name) ? $post_data->post_name : '';
                 }
             }
             break;
         case 'link':
         case 'title-link':
         case 'title-link-out':
         case 'title':
             $result = $post->post_title;
             break;
         case 'author':
             $author_id = $post->post_author;
             $user = get_user_by('id', $author_id);
             if (!empty($parameters['meta'])) {
                 $result = get_the_author_meta($parameters['meta'], $author_id);
             } elseif (!empty($user)) {
                 $result = $user->display_name;
             }
             break;
         case 'author-id':
             $result = $post->post_author;
             break;
         case 'author-url':
             $result = get_author_posts_url($post->post_author);
             break;
         case 'author-login':
             $author_id = $post->post_author;
             $result = do_shortcode('[users id=' . $author_id . '][user name][/users]');
             break;
         case 'avatar':
             if (!empty($parameters['size'])) {
                 $result = get_avatar($post->post_author, $parameters['size']);
             } else {
                 $result = get_avatar($post->post_author);
             }
             break;
         case 'date':
             if (!empty($parameters['date_format'])) {
                 if ($parameters['date_format'] == 'relative') {
                     $result = CCS_Format::get_relative_date($post->post_date);
                 } else {
                     $result = mysql2date($parameters['date_format'], $post->post_date);
                 }
             } else {
                 // Default date format under Settings -> General
                 $result = mysql2date(get_option('date_format'), $post->post_date);
             }
             break;
         case 'modified':
             if (!empty($parameters['date_format'])) {
                 $result = get_post_modified_time($parameters['date_format'], $gmt = false, $post_id, $translate = true);
             } else {
                 // Default date format under Settings -> General
                 $result = get_post_modified_time(get_option('date_format'), $gmt = false, $post_id, $translate = true);
             }
             break;
         case 'image-full':
             $parameters['size'] = 'full';
         case 'image':
             // image
         // image
         case 'image-link':
             // image with link to post
         // image with link to post
         case 'image-link-self':
             // image with link to attachment page
             $parameters['size'] = isset($parameters['size']) && !empty($parameters['size']) ? $parameters['size'] : 'full';
             if (empty($attr['alt'])) {
                 $attr['alt'] = self::wp_get_featured_image_field($post_id, 'alt');
             }
             $result = get_the_post_thumbnail($post_id, $parameters['size'], $attr);
             break;
         case 'image-url':
             $parameters['size'] = isset($parameters['size']) && !empty($parameters['size']) ? $parameters['size'] : 'full';
             $src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), $parameters['size']);
             $result = $src['0'];
             // $result = wp_get_attachment_url(get_post_thumbnail_id($post_id));
             break;
         case 'image-title':
         case 'image-caption':
         case 'image-alt':
         case 'image-description':
             $image_field_name = substr($field, 6);
             // Remove "image-"
             $result = self::wp_get_featured_image_field($post_id, $image_field_name);
             break;
         case 'thumbnail':
             // thumbnail
         // thumbnail
         case 'thumbnail-link':
             // thumbnail with link to post
         // thumbnail with link to post
         case 'thumbnail-link-self':
             // thumbnail with link to attachment page
             $parameters['size'] = isset($parameters['size']) && !empty($parameters['size']) ? $parameters['size'] : 'thumbnail';
             if (empty($attr['alt'])) {
                 $attr['alt'] = self::wp_get_featured_image_field($post_id, 'alt');
             }
             $result = get_the_post_thumbnail($post_id, $parameters['size'], $attr);
             break;
         case 'thumbnail-url':
             $src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), 'thumbnail');
             $result = $src['0'];
             break;
         case 'tags':
             $result = implode(' ', wp_get_post_tags($post_id, array('fields' => 'names')));
             break;
         case 'gallery':
             // Get specific image from gallery field
             if (class_exists('CCS_Gallery_Field')) {
                 // Check if gallery field is enabled
                 $attachment_ids = CCS_Gallery_Field::get_image_ids($post_id);
                 if (empty($parameters['num'])) {
                     $parameters['num'] = 1;
                 }
                 if (empty($parameters['size'])) {
                     $parameters['size'] = 'full';
                 }
                 $result = wp_get_attachment_image($attachment_ids[$parameters['num'] - 1], $parameters['size'], $icon = false, $attr);
             }
             break;
         case 'excerpt':
             // Get excerpt
             //        $result = get_the_excerpt();
             $result = $post->post_excerpt;
             if (empty($result)) {
                 // If empty, get it from post content
                 $result = $post->post_content;
                 if (empty($parameters['words']) && empty($parameters['length'])) {
                     self::$parameters['words'] = 25;
                 }
             }
             break;
         case 'debug':
             ob_start();
             echo '<pre>';
             print_r(get_post_custom($post_id));
             echo '</pre>';
             if (function_exists('acf_get_fields_by_id')) {
                 echo '<pre>';
                 print_r(acf_get_fields_by_id($post_id));
                 echo '</pre>';
             }
             $result = ob_get_clean();
             break;
         case 'loop-count':
             $result = CCS_Loop::$state['loop_count'];
             break;
         default:
             /*---------------------------------------------
              *
              * Custom field
              *
              */
             if (!empty($parameters['custom']) && $parameters['custom'] == 'true') {
                 $field = $custom;
             }
             $result = get_post_meta($post_id, $field, true);
             if (is_numeric($result) && !empty($parameters['return'])) {
                 if ($parameters['return'] == 'page-link') {
                     // ACF page link: get URL from post ID
                     $result = get_permalink($result);
                 } else {
                     // Get attachment field
                     $parameters['id'] = $result;
                     $parameters['field'] = $parameters['return'];
                     $result = self::get_the_attachment_field($parameters);
                 }
             } elseif (!empty($parameters['property']) && is_object($result)) {
                 $result = self::get_object_property($result, $parameters['property']);
             } elseif (!empty($parameters['currency']) || !empty($parameters['decimals']) || !empty($parameters['point']) || !empty($parameters['thousands'])) {
                 $currency = !empty($parameters['currency']) ? $parameters['currency'] : '';
                 $decimals = !empty($parameters['decimals']) ? $parameters['decimals'] : 2;
                 $point = !empty($parameters['point']) ? $parameters['point'] : '.';
                 $thousands = !empty($parameters['thousands']) ? $parameters['thousands'] : ',';
                 $result = CCS_Format::getCurrency($result, $currency, $decimals, $point, $thousands);
             }
             break;
     }
     return $result;
 }
Example #5
0
 function mb_fields()
 {
     // global
     global $field_group;
     // get fields
     $view = array('fields' => acf_get_fields_by_id($field_group['ID']), 'parent' => 0);
     // load view
     acf_get_view('field-group-fields', $view);
 }