Created
May 24, 2024 06:22
-
-
Save mclarenmervin/9de2058f6b6ec1c5a431d7e26f23989e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function sp_edd_filter_query($query, $atts) | |
{ | |
// We're going to modify the order and orderby parameters depending on variables contained in the URL | |
if (isset($_GET['sp_orderby'])) { | |
$orderby = $_GET['sp_orderby']; | |
if(isset($orderby) && $orderby == 'free') { | |
// Add meta query to filter downloads with price zero | |
$meta_query = isset($query['meta_query']) ? $query['meta_query'] : array(); | |
// print_r($meta_query); | |
$meta_query[] = array( | |
'key' => 'edd_price', | |
'value' => '0', | |
'compare' => '=' | |
); | |
$query['meta_query'] = $meta_query; | |
} else if(isset($orderby) && $orderby == 'paid') { | |
// Add meta query to filter downloads with price zero | |
$meta_query = isset($query['meta_query']) ? $query['meta_query'] : array(); | |
// print_r($meta_query); | |
$meta_query[] = array( | |
'key' => 'edd_price', | |
'value' => '0', | |
'compare' => '!=' | |
); | |
$query['meta_query'] = $meta_query; | |
} | |
} | |
// Return the query, with thanks | |
return $query; | |
} | |
add_filter('edd_downloads_query', 'sp_edd_filter_query', 10, 2); | |
function sp_edd_add_dropdown($display) | |
{ | |
$orderby = ''; | |
// Get the current parameter | |
if (isset($_GET['sp_orderby'])) { | |
$orderby = $_GET['sp_orderby']; | |
} | |
// Get the array of parameters | |
$params = sp_edd_orderby_params(); | |
$select = ''; | |
if (!empty($params)) { | |
// Build the select field | |
$select = '<form class="sp-edd-sorting">'; | |
$select .= '<select class="sp-orderby" name="sp_orderby">'; | |
// Iterate through each parameter to add options to the select field | |
foreach ($params as $param) { | |
$select .= '<option value="' . $param['id'] . '" ' . selected($param['id'], $orderby, false) . '>' . $param['title'] . '</option>'; | |
} | |
$select .= '</select>'; | |
$select .= '</form>'; | |
// Add a script to submit the form when a new selection is made | |
$select .= '<script> | |
jQuery(document).ready(function($) { | |
$(".sp-orderby").change( function(){ | |
$(this).closest("form").submit(); | |
}); | |
}); | |
</script>'; | |
// Add the select field to the top of the downloads grid | |
$display = $select . $display; | |
} | |
return $display; | |
} | |
add_filter('downloads_shortcode', 'sp_edd_add_dropdown', 10, 1); | |
function sp_edd_orderby_params() | |
{ | |
$params = array( | |
'all' => array( | |
'id' => 'all', | |
'title' => __('All Extenssion', 'sp-for-edd'), | |
'orderby' => 'edd_price', // Orderby parameter, must be legit WP_Query orderby param | |
), | |
'free' => array( | |
'id' => 'free', | |
'title' => __('Free Extenssion', 'sp-for-edd'), | |
'orderby' => 'edd_price', | |
), | |
'paid' => array( | |
'id' => 'paid', | |
'title' => __('Paid Extenssion', 'sp-for-edd'), | |
'orderby' => 'edd_price', | |
), | |
); | |
$params = apply_filters('sp_edd_filter_orderby_params', $params); | |
return $params; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment