Inventory_Presser_Shortcode_Sort_By::content( array $atts )
Creates the HTML output that replaces the shortcode.
On This Page
Parameters Parameters
- $atts
-
(array) (Required) Shortcode attributes.
Return Return
(string)
Source Source
File: includes/shortcode/class-shortcode-sort-by.php
public function content( $atts ) {
$atts = shortcode_atts(
array(
'label' => __( 'Sort', 'inventory-presser' ),
),
$atts,
'invp_sort_by'
);
global $wp_query;
// If there are no posts, abort.
if ( 0 === $wp_query->found_posts ) {
return '';
}
if ( ! wp_script_is( 'invp_sort_by', 'registered' ) ) {
Inventory_Presser_Plugin::include_scripts_and_styles();
}
wp_enqueue_script( 'invp_sort_by' );
$html = '';
if ( ! empty( $atts['label'] ) ) {
$html .= sprintf( '<label for="sort_by">%s</label> ', esc_html( $atts['label'] ) );
}
$html .= '<select class="inventory_sort" id="sort_by">';
$options_data = apply_filters(
'invp_sort_dropdown_options',
array(
'make' => array(
'ASC' => __( 'Make A-Z', 'inventory-presser' ),
'DESC' => __( 'Make Z-A', 'inventory-presser' ),
),
'price' => array(
'ASC' => __( 'Price Low', 'inventory-presser' ),
'DESC' => __( 'Price High', 'inventory-presser' ),
),
'odometer' => array(
'ASC' => sprintf(
'%s %s',
apply_filters( 'invp_odometer_word', 'Mileage' ),
__( 'Low', 'inventory-presser' )
),
'DESC' => sprintf(
'%s %s',
apply_filters( 'invp_odometer_word', 'Mileage' ),
__( 'High', 'inventory-presser' )
),
),
'year' => array(
'ASC' => __( 'Year Oldest', 'inventory-presser' ),
'DESC' => __( 'Year Newest', 'inventory-presser' ),
),
)
);
$plugin_settings = INVP::settings();
$current_sort_key = isset( $_GET['orderby'] ) ? sanitize_text_field( wp_unslash( $_GET['orderby'] ) ) : ( isset( $plugin_settings['sort_vehicles_by'] ) ? $plugin_settings['sort_vehicles_by'] : '' );
$current_sort_dir = isset( $_GET['order'] ) ? sanitize_text_field( wp_unslash( $_GET['order'] ) ) : ( isset( $plugin_settings['sort_vehicles_order'] ) ? $plugin_settings['sort_vehicles_order'] : '' );
if ( ! empty( $current_sort_key ) ) {
$without_prefix = apply_filters( 'invp_unprefix_meta_key', $current_sort_key );
if ( ! in_array( $without_prefix, array_keys( $options_data ), true ) ) {
// The current sort option isn't in the list, so add it.
$label = ucfirst( $without_prefix );
switch ( $without_prefix ) {
case 'post_date':
$label = __( 'Date entered', 'inventory-presser' );
break;
case 'post_modified':
$label = __( 'Last modified', 'inventory-presser' );
break;
}
$options_data[ $without_prefix ] = array(
'ASC' => $label . ' 🔼',
'DESC' => $label . ' 🔽',
);
}
}
foreach ( $options_data as $key => $options ) {
foreach ( $options as $dir => $label ) {
$html .= sprintf(
'<option data-order="%s" value="%s"%s>%s</option>',
esc_attr( $dir ),
esc_attr( $key ),
selected( $key . $dir, $current_sort_key . $current_sort_dir, false ),
esc_html( $label )
);
}
}
return $html . '</select>';
}
Expand full source codeCollapse full source codeView on Github