Function Reference: geodir_count_reviews_by_terms
Summary
Count reviews by terms.
Global Values
- $gd_session
- (object) (required) GeoDirectory Session object.
- Default: None
Package
GeoDirectory
Parameters
- $force_update
- (bool) (required) Force update option value?. false.
- Default:
Return Values
- (array)
- Term array data.
Change Log
Since: 1.0.0
1.6.1 Fixed add listing page load time.
Filters
‘geodir_count_reviews_by_terms_before’ [Line: 4010]
Source File
geodir_count_reviews_by_terms() is located in geodirectory-functions/general_functions.php [Line: 4000]
Source Code
function geodir_count_reviews_by_terms( $force_update = false, $post_ID = 0 ) { /** * Filter review count option data. * * @since 1.0.0 * @since 1.6.1 Added $post_ID param. * * @param bool $force_update Force update option value?. Default.false. * @param int $post_ID The post id to update if any. */ $option_data = apply_filters( 'geodir_count_reviews_by_terms_before', '', $force_update, $post_ID ); if ( ! empty( $option_data ) ) { return $option_data; } $option_data = get_option( 'geodir_global_review_count' ); if ( ! $option_data || $force_update ) { if ( (int) $post_ID > 0 ) { // Update reviews count for specific post categories only. global $gd_session; $term_array = (array) $option_data; $post_type = get_post_type( $post_ID ); $taxonomy = $post_type . 'category'; $terms = wp_get_object_terms( $post_ID, $taxonomy, array( 'fields' => 'ids' ) ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { foreach ( $terms as $term_id ) { $count = geodir_count_reviews_by_term_id( $term_id, $taxonomy, $post_type ); $children = get_term_children( $term_id, $taxonomy ); $term_array[ $term_id ] = $count; } } $session_listing = $gd_session->get( 'listing' ); $terms = array(); if ( isset( $_POST['post_category'][ $taxonomy ] ) ) { $terms = (array) $_POST['post_category'][ $taxonomy ]; } else if ( ! empty( $session_listing ) && isset( $session_listing['post_category'][ $taxonomy ] ) ) { $terms = (array) $session_listing['post_category'][ $taxonomy ]; } if ( ! empty( $terms ) ) { foreach ( $terms as $term_id ) { if ( $term_id > 0 ) { $count = geodir_count_reviews_by_term_id( $term_id, $taxonomy, $post_type ); $children = get_term_children( $term_id, $taxonomy ); $term_array[ $term_id ] = $count; } } } } else { // Update reviews count for all post categories. $term_array = array(); $post_types = geodir_get_posttypes(); foreach ( $post_types as $post_type ) { $taxonomy = geodir_get_taxonomies( $post_type ); $taxonomy = $taxonomy[0]; $args = array( 'hide_empty' => false ); $terms = get_terms( $taxonomy, $args ); foreach ( $terms as $term ) { $count = geodir_count_reviews_by_term_id( $term->term_id, $taxonomy, $post_type ); $children = get_term_children( $term->term_id, $taxonomy ); /*if ( is_array( $children ) ) { foreach ( $children as $child_id ) { $child_count = geodir_count_reviews_by_term_id($child_id, $taxonomy, $post_type); $count = $count + $child_count; } }*/ $term_array[ $term->term_id ] = $count; } } } update_option( 'geodir_global_review_count', $term_array ); //clear cache wp_cache_delete( 'geodir_global_review_count' ); return $term_array; } else { return $option_data; } }