get_layout($layout_name, $field); acfe_flexible_render_layout($layout, $field); endwhile; return ob_get_clean(); } } /** * The Flexible */ if(!function_exists('the_flexible')){ function the_flexible($selector, $post_id = false){ echo get_flexible($selector, $post_id); } } /** * Has Flexible */ if(!function_exists('has_flexible')){ function has_flexible($selector, $post_id = false){ return have_rows($selector, $post_id); } } /** * ACFE Flexible: Render Layout */ function acfe_flexible_render_layout($layout, $field){ // Is preview $is_preview = false; if(wp_doing_ajax()) $is_preview = true; // handle $handle = acf_slugify($field['name']) . '-layout-' . acf_slugify($layout['name']); // render $render = array( 'style' => false, 'script' => false, 'template' => false, ); if(!$is_preview){ // Add HTML Comment echo "\n" . '' . "\n"; } // Render: Style if(isset($layout['acfe_flexible_render_style']) && !empty($layout['acfe_flexible_render_style'])){ if(file_exists(ACFE_THEME_PATH . '/' . $layout['acfe_flexible_render_style'])){ if(!$is_preview){ wp_enqueue_style($handle, ACFE_THEME_URL . '/' . $layout['acfe_flexible_render_style'], array(), false, 'all'); }else{ $render['style'] = ''; } } } // Render: Script if(isset($layout['acfe_flexible_render_script']) && !empty($layout['acfe_flexible_render_script'])){ if(file_exists(ACFE_THEME_PATH . '/' . $layout['acfe_flexible_render_script'])){ if(!$is_preview){ wp_enqueue_script($handle, ACFE_THEME_URL . '/' . $layout['acfe_flexible_render_script'], array(), false, true); }else{ $render['script'] = ''; } } } // Render: Template if(isset($layout['acfe_flexible_render_template']) && !empty($layout['acfe_flexible_render_template'])){ $acfe_flexible_render_template = ACFE_THEME_PATH . '/' . $layout['acfe_flexible_render_template']; $path = false; // File exists if(file_exists($acfe_flexible_render_template)){ $path = $acfe_flexible_render_template; // Locate Template }else{ $path = locate_template(array($acfe_flexible_render_template)); } // Include if(file_exists($path)){ if(!$is_preview){ include($path); }else{ $render['template'] = $path; } } } if($is_preview) return $render; } /** * Get Field Group from Field */ function acfe_get_field_group_from_field($field){ $field_parent = $field['parent']; if(!$field_ancestors = acf_get_field_ancestors($field)) return acf_get_field_group($field_parent); // Reverse for DESC order (Top field first) $field_ancestors = array_reverse($field_ancestors); $field_top_ancestor = $field_ancestors[0]; $field_top_ancestor = acf_get_field($field_top_ancestor); return acf_get_field_group($field_top_ancestor['parent']); } /** * Is Json * Source: https://stackoverflow.com/a/6041773 */ function acfe_is_json($string){ // in case string = 1 if(is_numeric($string)) return false; json_decode($string); return (json_last_error() == JSON_ERROR_NONE); } /** * Get Roles */ function acfe_get_roles(){ global $wp_roles; $choices = array(); if(is_multisite()) $choices['super_admin'] = __('Super Admin'); foreach($wp_roles->roles as $role => $settings){ $choices[$role] = $settings['name']; } return $choices; } /** * Get Current Roles */ function acfe_get_current_user_roles(){ global $current_user; if(!is_object($current_user) || !isset($current_user->roles)) return false; $roles = $current_user->roles; if(is_multisite() && current_user_can('setup_network')) $roles[] = 'super_admin'; return $roles; } /** * Folder Exists */ function acfe_folder_exists($folder){ if(!is_dir(ACFE_THEME_PATH . '/' . $folder)) return false; return true; } /** * Array Keys Recursive */ function acfe_array_keys_r($array){ $keys = array_keys($array); foreach($array as $i){ if(!is_array($i)) continue; $keys = array_merge($keys, acfe_array_keys_r($i)); } return $keys; }