Enfold – Add More Post Type Order Options to Avia Builder
When creating custom websites with the Enfold theme you might want to add Custom Post Type sections to your site. Unfortunately Enfold’s Avia Builder doesn’t give you a whole lot of options for displaying CPT data in a specific order on the front end.
For example: You might want to add the awesome Simple Custom Post Order plugin to WordPress and then display your posts in the drag and drop order you specified on the back end. The function below adds additional drop down options to the Blog Grid / Blog Slider / Magazine elements in the Avia Builder. In the case of drag and drop you would want to use the “Page Order” option.

Add Additional Order Options
To provide additional order options within Enfold you just need to add the rather lengthy function below to your theme’s functions.php file.
// Additional Avia Post Type Order Options
if(!function_exists('avia_custom_query_extension')) {
function avia_custom_query_extension($query, $params) {
global $avia_config;
if(!empty($avia_config['avia_custom_query_options']['order'])) {
$query['order'] = $avia_config['avia_custom_query_options']['order'];
}
if(!empty($avia_config['avia_custom_query_options']['orderby'])) {
$query['orderby'] = $avia_config['avia_custom_query_options']['orderby'];
}
unset($avia_config['avia_custom_query_options']);
return $query;
}
add_filter('avia_masonry_entries_query', 'avia_custom_query_extension', 10, 2);
add_filter('avia_post_grid_query', 'avia_custom_query_extension', 10, 2);
add_filter('avia_post_slide_query', 'avia_custom_query_extension', 10, 2);
add_filter('avia_blog_post_query', 'avia_custom_query_extension', 10, 2);
add_filter('avf_magazine_entries_query', 'avia_custom_query_extension', 10, 2);
add_filter('avf_template_builder_shortcode_elements','avia_custom_query_options', 10, 1);
function avia_custom_query_options($elements) {
$allowed_elements = array('av_blog','av_masonry_entries','av_postslider','av_portfolio','av_magazine');
if(isset($_POST['params']['allowed']) && in_array($_POST['params']['allowed'], $allowed_elements)) {
$elements[] = array(
"name" => __("Custom Query Orderby",'avia_framework' ),
"desc" => __("Set a custom query orderby value",'avia_framework' ),
"id" => "orderby",
"type" => "select",
"std" => "",
"subtype" => array(
__('Default Order', 'avia_framework' ) =>'',
__('Title', 'avia_framework' ) =>'title',
__('Random', 'avia_framework' ) =>'rand',
__('Date', 'avia_framework' ) =>'date',
__('Author', 'avia_framework' ) =>'author',
__('Name (Post Slug)', 'avia_framework' ) =>'name',
__('Modified', 'avia_framework' ) =>'modified',
__('Comment Count', 'avia_framework' ) =>'comment_count',
__('Page Order', 'avia_framework' ) =>'menu_order')
);
$elements[] = array(
"name" => __("Custom Query Order",'avia_framework' ),
"desc" => __("Set a custom query order",'avia_framework' ),
"id" => "order",
"type" => "select",
"std" => "",
"subtype" => array(
__('Default Order', 'avia_framework' ) =>'',
__('Ascending Order', 'avia_framework' ) =>'ASC',
__('Descending Order', 'avia_framework' ) =>'DESC'));
}
return $elements;
}
add_filter('avf_template_builder_shortcode_meta', 'avia_custom_query_add_query_params_to_config', 10, 4);
function avia_custom_query_add_query_params_to_config($meta, $atts, $content, $shortcodename) {
global $avia_config;
if(empty($avia_config['avia_custom_query_options'])) $avia_config['avia_custom_query_options'] = array();
if(!empty($atts['order']))
{
$avia_config['avia_custom_query_options']['order'] = $atts['order'];
}
if(!empty($atts['orderby']))
{
$avia_config['avia_custom_query_options']['orderby'] = $atts['orderby'];
}
return $meta;
}
}

Leave a Reply
Want to join the discussion?Feel free to contribute!