er', 'wp_localize_vanillajs_datepicker' ), 1000 ); add_filter( 'posts_clauses', array( $this, 'sort_post_by_view' ), 10, 2 ); add_filter( 'jnews_view_counter_query_join', array( $this, 'multi_lang_query_join' ), 99, 2 ); add_filter( 'jnews_view_counter_query_where', array( $this, 'multi_lang_query_where' ), 99, 2 ); } /** * Load plugin text domain */ private function load_plugin_text_domain() { load_plugin_textdomain( JNEWS_VIEW_COUNTER, false, basename( JNEWS_VIEW_COUNTER_DIR ) . '/languages/' ); } /** * Sorting Post by Post View */ public function sort_post_by_view( $clauses, $query ) { if ( ! is_admin() || ! $query->is_main_query() ) { return $clauses; } global $wpdb; if ( $query->get( 'post_type' ) === 'post' && $query->get( 'orderby' ) === 'view_count' ) { $clauses['join'] .= "LEFT JOIN {$wpdb->prefix}popularpostsdata ON {$wpdb->prefix}posts.ID = {$wpdb->prefix}popularpostsdata.postid"; $clauses['orderby'] = "{$wpdb->prefix}popularpostsdata.pageviews " . $query->get( 'order' ); } return $clauses; } /** * Adding multi language filter on view counter JOIN Query. * * @param string $join JNews View Counter JOIN QUERY. * @param object $instance JNews Element Instance. */ public function multi_lang_query_join( $join, $instance ) { if ( ! JNews_View_Counter()->options['general']['sync_multilang'] ) { if ( function_exists( 'pll_get_post' ) ) { global $wpdb; $join .= " INNER JOIN `{$wpdb->prefix}term_relationships` tr ON p.ID = tr.object_id INNER JOIN `{$wpdb->prefix}term_taxonomy` tt ON tr.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN `{$wpdb->prefix}terms` t ON tt.term_id = t.term_id "; } elseif ( defined( 'ICL_LANGUAGE_CODE' ) ) { global $wpdb; $join .= " JOIN `{$wpdb->prefix}icl_translations` tr ON p.ID = tr.element_id AND tr.element_type = CONCAT('post_', p.post_type) "; } } return $join; } /** * Adding multi language filter on view counter WHERE Query. * * @param string $where JNews View Counter WHERE QUERY. * @param object $instance JNews Element Instance. */ public function multi_lang_query_where( $where, $instance ) { if ( ! JNews_View_Counter()->options['general']['sync_multilang'] ) { if ( function_exists( 'pll_current_language' ) ) { $where = $where . ' AND tt.taxonomy = "language" AND t.slug ="' . pll_current_language() . '"'; } elseif ( defined( 'ICL_LANGUAGE_CODE' ) ) { $where .= " AND tr.language_code = '" . ICL_LANGUAGE_CODE . "'"; } } return $where; } }