Function Reference: geodir_popular_post_category_output
Summary
Generates popular post category HTML.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $plugin_prefix
- (string) (required) Geodirectory plugin table prefix.
- Default: None
- $geodir_post_category_str
- (string) (required) The geodirectory post category.
- Default: None
Package
GeoDirectory
Parameters
- $args
- (array|string) (required) Display arguments including before_title, after_title, before_widget, and
after_widget.- Default: None
- $instance
- (array|string) (required) The settings for the particular instance of the widget.
- Default: None
Change Log
Since: 1.0.0
1.5.1 Added option to set default post type.
1.6.9 Added option to show parent categories only.
1.6.18 Added option to show parent categories only.
Filters
‘geodir_pp_category_taxonomy’ [Line: 2902]
‘geodir_pp_category_sort’ [Line: 2935]
Source File
geodir_popular_post_category_output() is located in geodirectory-functions/general_functions.php [Line: 2869]
Source Code
function geodir_popular_post_category_output( $args = '', $instance = '' ) {
// prints the widget
global $wpdb, $plugin_prefix, $geodir_post_category_str;
extract( $args, EXTR_SKIP );
echo $before_widget;
/** This filter is documented in geodirectory_widgets.php */
$title = empty( $instance['title'] ) ? __( 'Popular Categories', 'geodirectory' ) : apply_filters( 'widget_title', __( $instance['title'], 'geodirectory' ) );
$gd_post_type = geodir_get_current_posttype();
$category_limit = isset( $instance['category_limit'] ) && $instance['category_limit'] > 0 ? (int) $instance['category_limit'] : 15;
if (!isset($category_restrict)) {
$category_restrict = false;
}
if ( ! empty( $gd_post_type ) ) {
$default_post_type = $gd_post_type;
} elseif ( isset( $instance['default_post_type'] ) && gdsc_is_post_type_valid( $instance['default_post_type'] ) ) {
$default_post_type = $instance['default_post_type'];
} else {
$all_gd_post_type = geodir_get_posttypes();
$default_post_type = ( isset( $all_gd_post_type[0] ) ) ? $all_gd_post_type[0] : '';
}
$parent_only = !empty( $instance['parent_only'] ) ? true : false;
$taxonomy = array();
if ( ! empty( $gd_post_type ) ) {
$taxonomy[] = $gd_post_type . "category";
} else {
$taxonomy = geodir_get_taxonomies( $gd_post_type );
}
$taxonomy = apply_filters('geodir_pp_category_taxonomy', $taxonomy);
$term_args = array( 'taxonomy' => $taxonomy );
if ( $parent_only ) {
$term_args['parent'] = 0;
}
$terms = get_terms( $term_args );
$a_terms = array();
$b_terms = array();
foreach ( $terms as $term ) {
if ( $term->count > 0 ) {
$a_terms[ $term->taxonomy ][] = $term;
}
}
if ( ! empty( $a_terms ) ) {
// Sort CPT taxonomies in categories widget.
if ( !empty( $taxonomy ) && is_array( $taxonomy ) && count( $taxonomy ) > 1 ) {
$gd_post_types = geodir_get_posttypes();
$sort_taxonomies = array();
foreach ( $gd_post_types as $gd_post_type ) {
$taxonomy_name = $gd_post_type . 'category';
if ( !empty( $a_terms[$taxonomy_name] ) ) {
$sort_taxonomies[$taxonomy_name] = $a_terms[$taxonomy_name];
}
}
$a_terms = !empty( $sort_taxonomies ) ? $sort_taxonomies : $a_terms;
}
$sort_by = apply_filters('geodir_pp_category_sort', 'count');
foreach ( $a_terms as $b_key => $b_val ) {
$b_terms[ $b_key ] = geodir_sort_terms( $b_val, $sort_by );
}
$default_taxonomy = $default_post_type != '' && isset( $b_terms[ $default_post_type . 'category' ] ) ? $default_post_type . 'category' : '';
$tax_change_output = '';
if ( count( $b_terms ) > 1 ) {
$tax_change_output .= "";
}
if ( ! empty( $b_terms ) ) {
$terms = $default_taxonomy != '' && isset( $b_terms[ $default_taxonomy ] ) ? $b_terms[ $default_taxonomy ] : reset( $b_terms );// get the first array
global $cat_count;//make global so we can change via function
$cat_count = 0;
?>
';
geodir_helper_cat_list_output( $terms, $category_limit, $category_restrict);
echo '';
?>
";
echo '' . __( 'More Categories', 'geodirectory' ) . '';
echo '' . __( 'Less Categories', 'geodirectory' ) . '';
echo "";
}
/* add scripts */
add_action( 'wp_footer', 'geodir_popular_category_add_scripts', 100 );
?>