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;
}