/** * Get post views from Jetpack. */ function jp_get_post_views($postID) { if (function_exists('stats_get_csv')) { $post_stats = stats_get_csv('postviews', array('days' => 365, 'limit' => -1)); foreach ($post_stats as $p) { if ($p['post_id'] == $postID) { ?> <span class='post-views'><?php echo '<i class="fa fa-eye"></i>' . number_format_i18n($p['views']); ?> </span> <?php } } } }
function widget($args, $instance) { global $post; /* PRINT THE WIDGET */ extract($args, EXTR_SKIP); $instance = wp_parse_args((array) $instance, array('title' => '')); $title = esc_attr($instance['title']); if (!is_single()) { return; } echo $before_widget; if (!empty($title)) { echo $before_title; echo apply_filters('widget_title', $title, $instance, $this->id_base); echo $after_title; } $name = get_the_author_meta('display_name', $post->post_author); echo '<div class="large-icons">'; echo '<ul>'; edit_post_link('<i class="icon-pencil"></i>' . __('Edit', 'myThemes'), '<li>', '</li>'); echo '<li><a href="' . get_day_link(get_post_time('Y', false, $post->ID), get_post_time('m', false, $post->ID), get_post_time('d', false, $post->ID)) . '">'; echo '<time datetime="' . get_post_time('Y-m-d', false, $post->ID) . '"><i class="icon-calendar"></i>' . get_post_time(get_option('date_format'), false, $post->ID) . '</time></a></li>'; echo '<li><a href="' . get_author_posts_url($post->post_author) . '" title="' . __('Writed by ', 'myThemes') . ' ' . $name . '"><i class="icon-user-5"></i>' . $name . '</a></li>'; if ($post->comment_status == 'open') { $nr = get_comments_number($post->ID); if ($nr == 1) { $comments = $nr . ' ' . __('Comment', 'myThemes'); } else { $comments = $nr . ' ' . __('Comments', 'myThemes'); } echo '<li><a href="' . get_comments_link($post->ID) . '"><i class="icon-comment"></i>' . $comments . '</a></li>'; } if (function_exists('stats_get_csv')) { $args = array('days' => -1, 'post_id' => $post->ID); $result = stats_get_csv('postviews', $args); $views = $result[0]['views']; $nr_views = number_format_i18n($views); $label_views = __('views', 'myThemes'); if ($nr_views == 1) { $label_views = __('view', 'myThemes'); } echo '<li><i class="icon-eye-2"></i> ' . $nr_views . ' ' . $label_views . '</li>'; } echo '</ul>'; echo '</div>'; echo $after_widget; }
function widget($args, $instance) { global $post; /* PRINT THE WIDGET */ extract($args, EXTR_SKIP); $instance = wp_parse_args((array) $instance, array('title' => '')); $title = $instance['title']; if (!is_single()) { return; } echo $before_widget; if (!empty($title)) { echo $before_title; echo apply_filters('widget_title', esc_attr($title), $instance, $this->id_base); echo $after_title; } $y = esc_attr(get_post_time('Y', false, $post->ID)); $m = esc_attr(get_post_time('m', false, $post->ID)); $d = esc_attr(get_post_time('d', false, $post->ID)); $name = get_the_author_meta('display_name', $post->post_author); $dtime = get_post_time('Y-m-d', false, $post->ID); $ptime = get_post_time(esc_attr(get_option('date_format')), false, $post->ID, true); echo '<div class="large-icons">'; echo '<ul>'; edit_post_link('<i class="icon-pencil"></i>' . __('Edit', 'treeson'), '<li>', '</li>'); echo '<li><a href="' . esc_url(get_day_link($y, $m, $d)) . '">'; echo '<time datetime="' . esc_attr($dtime) . '"><i class="icon-calendar"></i>' . esc_html($ptime) . '</time></a></li>'; echo '<li><a href="' . esc_url(get_author_posts_url($post->post_author)) . '" title="' . sprintf(__('Writed by %s', 'treeson'), esc_attr($name)) . '"><i class="icon-user-5"></i>' . esc_html($name) . '</a></li>'; if ($post->comment_status == 'open') { $nr = get_comments_number($post->ID); echo '<li>'; echo '<a href="' . esc_url(get_comments_link($post->ID)) . '">'; echo '<i class="icon-comment"></i>'; echo sprintf(_nx('%s Comment', '%s Comments', absint($nr), 'Number of comment(s) from widget "myThemes: Meta Details"', 'treeson'), number_format_i18n(absint($nr))); echo '</a></li>'; } if (function_exists('stats_get_csv')) { $args = array('days' => -1, 'post_id' => $post->ID); $result = stats_get_csv('postviews', $args); $views = $result[0]['views']; echo '<li><i class="icon-eye-2"></i> ' . sprintf(_n('%s view', '%s views', absint($views), 'treeson'), number_format_i18n(absint($views))) . '</li>'; } echo '</ul>'; echo '</div>'; echo $after_widget; }
function trendy() { /* The Code ----------------- */ if (function_exists('stats_get_csv')) { $top_posts = stats_get_csv('postviews', 'days=7&limit=5'); if (count($top_posts) > 0) { echo '<ul>'; foreach ($top_posts as $p) { ?> <li><a href="<?php echo $p['post_permalink']; ?> "><?php echo $p['post_title']; ?> </a></li> <?php } echo '</ul>'; } } /* End of The Code ---------- */ }
/** * Get the number of pageviews for a given post ID (defaults to the current post) * * Note that it is not currently possible to retrieve the post views for * the homepage using this function * * @param int $post_id Optional. The post ID to fetch stats for. Defaults to the $post global's value. * @param int $num_days Optional. How many days to go back to include in the stats. Default is 1. Maximum 90 days. * @param string|bool $end_data Optional. The last day of the desired time frame. Format is 'Y-m-d' (e.g. 2007-05-01) and default is today's UTC date. * @return int|false Number of pageviews or false on error. */ function wpcom_vip_get_post_pageviews($post_id = null, $num_days = 1, $end_date = false) { // Check Jetpack is present and active if (class_exists('Jetpack') && Jetpack::is_active()) { $args = array('post_id' => $post_id, 'num_days' => $num_days, 'end_date' => $end_date); // Default post_id to the current post ID, and check it's an int if (is_null($args['post_id'])) { $args['post_id'] = get_the_ID(); } $args['post_id'] = absint($args['post_id']); if (empty($args['post_id'])) { return false; } // Ensure num_days is least 1, but no more than 90 $args['num_days'] = max(1, min(90, absint($args['num_days']))); $posts = stats_get_csv('postviews', $args); $views = $posts[0]; } else { // If Jetpack is not present or not active, fake the data returned $views = mt_rand(0, 20000); } return absint($views); }
/** * Print HTML with meta information for the current post-date/time and author. * * @since SG Window 1.0.0 */ function sgwindow_posted_on() { $is_author = is_singular() ? '1' == sgwindow_get_theme_mod('is_author') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_author') ? true : false); $is_date = is_singular() ? '1' == sgwindow_get_theme_mod('is_date') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_date') ? true : false); $is_comments = is_singular() ? '1' == sgwindow_get_theme_mod('is_comments') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_comments') ? true : false); $is_views = is_singular() ? '1' == sgwindow_get_theme_mod('is_views') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_views') ? true : false); $rez = ''; // Set up and print post meta information. if ($is_date) { echo '<span class="entry-date"> <a href="' . esc_url(get_permalink()) . '" title="' . esc_attr(get_the_date('')) . '" rel="bookmark"> <span class="entry-date" datetime="' . esc_attr(get_the_date('')) . '">' . esc_html(get_the_date()) . '</span> </a> </span>'; } if ($is_author) { echo '<span class="byline"> <span title="' . get_the_author() . '" class="author vcard"> <a class="url fn n" href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '" rel="author">' . get_the_author() . '</a> </span> </span>'; } if ($is_views) { if (class_exists('Jetpack') && Jetpack::is_module_active('stats') && function_exists('stats_get_csv')) { $result = $result = stats_get_csv('postviews', 'post_id=' . get_the_ID() . '&days=-1&limit=-1&summarize'); echo '<span class="post-views" title="' . number_format_i18n($result[0]['views']) . '">' . number_format_i18n($result[0]['views']) . '</span>'; } } if ($is_comments) { if (!is_single() && !post_password_required() && (comments_open() || get_comments_number())) { echo '<span class="comments-link">'; comments_popup_link(__('Leave a comment', 'sg-window'), __('1 Comment', 'sg-window'), __('% Comments', 'sg-window')); echo '</span>'; } } }
/** * converts a pagebuilde array to a wordpress query args array * creates the $args array from shortcodes - used by the pagebuilde + widgets + by the metabox_to_args * @param string $atts : the shortcode string * @param string $paged : page number /1 or /2 * @return array */ static function shortcode_to_args($atts = '', $paged = '') { //print_r($atts); extract(shortcode_atts(array('category_ids' => '', 'category_id' => '', 'tag_slug' => '', 'sort' => '', 'limit' => '', 'autors_id' => '', 'installed_post_types' => '', 'posts_per_page' => '', 'offset' => '', 'live_filter' => '', 'live_filter_cur_post_id' => '', 'live_filter_cur_post_author' => ''), $atts)); //init the array $wp_query_args = array('ignore_sticky_posts' => 1, 'post_status' => 'publish'); /* ---------------------------------------------------------------------- jetpack sorting - this will return here if that's the case because it dosn't work with other filters (it's site wide, no category + this or other combinations) */ if ($sort == 'jetpack_popular_2') { if (function_exists('stats_get_csv')) { // the damn jetpack api cannot return only posts so it may return pages. That's why we query with a bigger + 5 limit // so that if the api returns also 5 pages mixed with the post we will still have the desired number of posts $jetpack_api_posts = stats_get_csv('postviews', array('days' => 2, 'limit' => $limit + 5)); if (!empty($jetpack_api_posts) and is_array($jetpack_api_posts)) { $wp_query_args['post__in'] = wp_list_pluck($jetpack_api_posts, 'post_id'); $wp_query_args['posts_per_page'] = $limit; return $wp_query_args; } } return array(); // empty array makes WP_Query not run } //the query goes only via $category_ids - for both options ($category_ids and $category_id) also $category_ids overwrites $category_id if (!empty($category_id) and empty($category_ids)) { $category_ids = $category_id; } if (!empty($category_ids)) { $wp_query_args['cat'] = $category_ids; } if (!empty($tag_slug)) { $wp_query_args['tag'] = str_replace(' ', '-', $tag_slug); } switch ($sort) { case 'featured': if (!empty($category_ids)) { //for each category, get the object and compose the slug $cat_id_array = explode(',', $category_ids); foreach ($cat_id_array as &$cat_id) { $cat_id = trim($cat_id); //get the category object $td_tmp_cat_obj = get_category($cat_id); //make the $args if (empty($wp_query_args['category_name'])) { $wp_query_args['category_name'] = $td_tmp_cat_obj->slug; //get by slug (we get the children categories too) } else { $wp_query_args['category_name'] .= ',' . $td_tmp_cat_obj->slug; //get by slug (we get the children categories too) } unset($td_tmp_cat_obj); } } $wp_query_args['cat'] = get_cat_ID(TD_FEATURED_CAT); //add the fetured cat break; case 'popular': $wp_query_args['meta_key'] = td_page_views::$post_view_counter_key; $wp_query_args['orderby'] = 'meta_value_num'; $wp_query_args['order'] = 'DESC'; break; case 'popular7': $wp_query_args['meta_key'] = td_page_views::$post_view_counter_7_day_total; $wp_query_args['orderby'] = 'meta_value_num'; $wp_query_args['order'] = 'DESC'; break; case 'review_high': $wp_query_args['meta_key'] = td_review::$td_review_key; $wp_query_args['orderby'] = 'meta_value_num'; $wp_query_args['order'] = 'DESC'; break; case 'random_posts': $wp_query_args['orderby'] = 'rand'; break; case 'alphabetical_order': $wp_query_args['orderby'] = 'title'; $wp_query_args['order'] = 'ASC'; break; case 'comment_count': $wp_query_args['orderby'] = 'comment_count'; $wp_query_args['order'] = 'DESC'; break; case 'random_today': $wp_query_args['orderby'] = 'rand'; $wp_query_args['year'] = date('Y'); $wp_query_args['monthnum'] = date('n'); $wp_query_args['day'] = date('j'); break; case 'random_7_day': $wp_query_args['orderby'] = 'rand'; $wp_query_args['date_query'] = array('column' => 'post_date_gmt', 'after' => '1 week ago'); break; } if (!empty($autors_id)) { $wp_query_args['author'] = $autors_id; } //add post_type to query if (!empty($installed_post_types)) { $array_selected_post_types = array(); $expl_installed_post_types = explode(',', $installed_post_types); foreach ($expl_installed_post_types as $val_this_post_type) { if (trim($val_this_post_type) != '') { $array_selected_post_types[] = trim($val_this_post_type); } } $wp_query_args['post_type'] = $array_selected_post_types; //$installed_post_types; } /** * the live filters are generated in td_block.php and are added when the block is rendered on the page in the atts of the block * @see td_block::add_live_filter_atts */ if (!empty($live_filter)) { switch ($live_filter) { case 'cur_post_same_tags': $tags = wp_get_post_tags($live_filter_cur_post_id); if ($tags) { $taglist = array(); for ($i = 0; $i <= 4; $i++) { if (!empty($tags[$i])) { $taglist[] = $tags[$i]->term_id; } else { break; } } $wp_query_args['tag__in'] = $taglist; $wp_query_args['post__not_in'] = array($live_filter_cur_post_id); //print_r($wp_query_args); //die; } break; case 'cur_post_same_author': $wp_query_args['author'] = $live_filter_cur_post_author; $wp_query_args['post__not_in'] = array($live_filter_cur_post_id); break; case 'cur_post_same_categories': //print_r($atts); $wp_query_args['category__in'] = wp_get_post_categories($live_filter_cur_post_id); $wp_query_args['post__not_in'] = array($live_filter_cur_post_id); break; // ZA Custom // ZA Custom case 'cur_post_same_tags_happy': $wp_query_args['tag__in'] = "44"; break; case 'cur_post_same_tags_funny': $wp_query_args['tag__in'] = "45"; break; case 'cur_post_same_tags_romantic': $wp_query_args['tag__in'] = "46"; break; case 'cur_post_same_tags_surprised': $wp_query_args['tag__in'] = "47"; break; case 'cur_post_same_tags_sad': $wp_query_args['tag__in'] = "48"; break; } } //show only unique posts if that setting is enabled on the template /*if (td_unique_posts::$show_only_unique == true) { $wp_query_args['post__not_in'] = td_unique_posts::$rendered_posts_ids; }*/ if (td_unique_posts::$unique_articles_enabled == true) { $wp_query_args['post__not_in'] = td_unique_posts::$rendered_posts_ids; } //custom pagination limit if (empty($limit)) { $limit = get_option('posts_per_page'); } $wp_query_args['posts_per_page'] = $limit; //custom pagination if (!empty($paged)) { $wp_query_args['paged'] = $paged; } else { $wp_query_args['paged'] = 1; } // offset + custom pagination - if we have offset, wordpress overwrites the pagination and works with offset + limit if (!empty($offset) and $paged > 1) { $wp_query_args['offset'] = $offset + ($paged - 1) * $limit; } else { $wp_query_args['offset'] = $offset; } //set this variable to pass it to the filter that fixes the pagination on the templates with fake loops. It is not used on blocks because the blocks have custom pagination self::$fake_loop_offset = $offset; //print_r($wp_query_args); return $wp_query_args; }
function stats_dashboard_widget_content() { $blog_id = stats_get_option('blog_id'); if (!($width = (int) ($_GET['width'] / 2)) || $width < 250) { $width = 370; } if (!($height = (int) $_GET['height'] - 36) || $height < 230) { $height = 230; } $_width = $width - 5; $_height = $height - ($GLOBALS['is_winIE'] ? 16 : 5); // hack! $options = stats_dashboard_widget_options(); $http = !empty($_SERVER['HTTPS']) ? 'https' : 'http'; $src = clean_url("{$http}://dashboard.wordpress.com/wp-admin/index.php?page=estats&blog={$blog_id}&noheader=true&chart&unit={$options['chart']}&width={$_width}&height={$_height}"); echo "<iframe id='stats-graph' class='stats-section' frameborder='0' style='width: {$width}px; height: {$height}px; overflow: hidden' src='{$src}'></iframe>"; $post_ids = array(); if (version_compare('2.7-z', $GLOBALS['wp_version'], '<=')) { $csv_args = array('top' => '&limit=8', 'active' => '&limit=5', 'search' => '&limit=5'); $printf = __('%s %s Views'); } else { $csv_args = array('top' => '', 'active' => '', 'search' => ''); $printf = __('%s, %s views'); } foreach ($top_posts = stats_get_csv('postviews', "days={$options['top']}{$csv_args['top']}") as $post) { $post_ids[] = $post['post_id']; } foreach ($active_posts = stats_get_csv('postviews', "days={$options['active']}{$csv_args['active']}") as $post) { $post_ids[] = $post['post_id']; } // cache get_posts(array('include' => join(',', array_unique($post_ids)))); $searches = array(); foreach ($search_terms = stats_get_csv('searchterms', "days={$options['search']}{$csv_args['search']}") as $search_term) { $searches[] = $search_term['searchterm']; } ?> <div id="stats-info"> <div id="top-posts" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Top Posts'); ?> </h4> <?php foreach ($top_posts as $post) { if (!get_post($post['post_id'])) { continue; } ?> <p><?php printf($printf, '<a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a>', number_format_i18n($post['views'])); ?> </p> <?php } ?> </div> </div> <div id="top-search" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Top Searches'); ?> </h4> <p><?php echo join(', ', $searches); ?> </p> </div> </div> <div id="active" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Most Active'); ?> </h4> <?php foreach ($active_posts as $post) { if (!get_post($post['post_id'])) { continue; } ?> <p><?php printf($printf, '<a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a>', number_format_i18n($post['views'])); ?> </p> <?php } ?> </div> </div> </div> <br class="clear" /> <p class="textright"> <a class="button" href="index.php?page=stats"><?php _e('View All'); ?> </a> </p> <?php exit; }
<li><a href="<?php bloginfo('rss2_url'); ?> " title="<?php _e('RSS 2.0'); ?> "> <img src="/wp-content/themes/goshen/img/feed-icon.png" alt="RSS 2.0" title="RSS 2.0" /> RSS 2.0</a></li> </ul> <?php if (function_exists('stats_get_csv')) { ?> <h2>Most-viewed</h2> <ul id="popularposts"> <?php $top_posts = stats_get_csv('postviews', 'days=60&limit=13'); $i = 0; foreach ($top_posts as $post) { if (!get_post($post['post_id']) || empty($post['post_id']) || in_array($post['post_id'], array(2, 9, 85, 526))) { continue; } echo '<li><a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a><div class="commentsnumber">' . get_comments_number($post['post_id']) . ' comments</div></li>'; $i++; if ($i >= 5) { break; } } ?> </ul> <?php }
echo '<ul>'; edit_post_link('<i class="icon-pencil"></i>' . __('Edit', 'materialize'), '<li>', '</li>'); echo '<li><a href="' . esc_url(get_day_link($y, $m, $d)) . '">'; echo '<time datetime="' . esc_attr($dtime) . '"><i class="icon-calendar"></i>' . esc_html($ptime) . '</time></a></li>'; echo '<li><a href="' . esc_url(get_author_posts_url($post->post_author)) . '" title="' . sprintf(__('Writed by %s', 'materialize'), esc_attr($name)) . '"><i class="icon-user-5"></i>' . esc_html($name) . '</a></li>'; if ($post->comment_status == 'open') { $nr = get_comments_number($post->ID); echo '<li>'; echo '<a href="' . esc_url(get_comments_link($post->ID)) . '">'; echo '<i class="icon-comment-5"></i>'; echo sprintf(_nx('%s Comment', '%s Comments', absint($nr), 'Number of comment(s) from widget "myThemes: Meta Details"', 'materialize'), number_format_i18n(absint($nr))); echo '</a></li>'; } if (function_exists('stats_get_csv')) { $args = array('days' => -1, 'post_id' => $post->ID); $result = stats_get_csv('postviews', $args); $views = $result[0]['views']; echo '<li><i class="icon-eye-2"></i> ' . sprintf(_n('%s view', '%s views', absint($views), 'materialize'), number_format_i18n(absint($views))) . '</li>'; } echo '</ul>'; echo '</div>'; echo '</div>'; /* ARTICLE CATEGORIES */ if (has_category()) { echo '<div class="widget widget_post_categories mythemes-default-content ' . esc_attr($default_class) . '">'; echo '<h4 class="widget-title">' . __('Article Categories', 'materialize') . '</h4>'; echo '<div>'; echo '<ul>'; echo '<li>'; the_category('</li><li>'); echo '</li>';
/** * Widget output * * @since SG Window 1.1.0 * */ function widget($args, $instance) { // Widget output extract($args); // Set up some default widget settings. $instance = wp_parse_args((array) $instance, $this->defaults($instance)); $curr_query = null; $popular_posts = null; if (1 == $instance['content_type']) { global $post; $not_in = array(); if (is_singular()) { $not_in[] = $post->ID; } $not_in = array_merge($not_in, get_option('sticky_posts')); $args = array(); $tax = 'category'; if ('0' != $instance['category']) { $args = array(array('taxonomy' => $tax, 'terms' => array($instance['category']), 'field' => 'term_id', 'operator' => 'IN')); } $query = new WP_Query(array('order' => 'DESC', 'orderby' => $instance['order'], 'posts_per_page' => $instance['count'], 'no_found_rows' => true, 'post_status' => 'publish', 'has_password' => false, 'post__not_in' => $not_in, 'post_type' => array('post'), 'tax_query' => $args)); $curr_query = $query; } elseif (3 == $instance['content_type']) { //from current query global $wp_query; $curr_query = $wp_query; } elseif (4 == $instance['content_type']) { //featured posts global $post; $not_in = array(); if (is_singular()) { $not_in[] = $post->ID; } $sticky = get_option('sticky_posts'); $args = array(); $tax = 'category'; if ('0' != $instance['category']) { $args = array(array('taxonomy' => $tax, 'terms' => array($instance['category']), 'field' => 'term_id', 'operator' => 'IN')); } $query = new WP_Query(array('order' => 'DESC', 'orderby' => $instance['order'], 'posts_per_page' => $instance['count'], 'no_found_rows' => true, 'post_status' => 'publish', 'has_password' => false, 'post__in' => $sticky, 'post__not_in' => $not_in, 'post_type' => array('post'), 'tax_query' => $args)); $curr_query = $query; } elseif (2 == $instance['content_type']) { //portfolio global $post; $not_in = array(); if (is_singular()) { $not_in[] = $post->ID; } $not_in = array_merge($not_in, get_option('sticky_posts')); $args = array(); $tax = 'jetpack-portfolio-type'; if ('0' != $instance['jetpack-portfolio-type']) { $args = array(array('taxonomy' => $tax, 'terms' => array($instance['jetpack-portfolio-type']), 'field' => 'term_id', 'operator' => 'IN')); } $query = new WP_Query(array('order' => 'DESC', 'posts_per_page' => $instance['count'], 'no_found_rows' => true, 'post_status' => 'publish', 'has_password' => false, 'post__not_in' => $not_in, 'post_type' => 'jetpack-portfolio', 'tax_query' => $args)); $curr_query = $query; } elseif (6 == $instance['content_type']) { //popular posts if (class_exists('Jetpack') && Jetpack::is_module_active('stats') && function_exists('stats_get_csv')) { $popular_posts = stats_get_csv('postviews', 'days=-1&limit=-1'); } } elseif (5 == $instance['content_type']) { //related posts global $post; $not_in = array(); if (is_singular()) { $not_in[] = $post->ID; } $not_in = array_merge($not_in, get_option('sticky_posts')); $args = array(); $args = array('relation' => 'OR', array('taxonomy' => 'category', 'terms' => wp_get_post_categories($post->ID), 'field' => 'term_id', 'operator' => 'IN'), array('taxonomy' => 'post_tag', 'terms' => wp_get_post_tags($post->ID, array('fields' => 'ids')), 'field' => 'term_id', 'operator' => 'IN')); $query = new WP_Query(array('order' => 'DESC', 'orderby' => $instance['order'], 'posts_per_page' => $instance['count'], 'no_found_rows' => true, 'post_status' => 'publish', 'has_password' => false, 'post__not_in' => $not_in, 'post_type' => array('post'), 'tax_query' => $args)); $curr_query = $query; } //print the widget for the sidebar if (0 == $instance['content_type'] || isset($curr_query) && $curr_query->have_posts() || isset($popular_posts)) { echo $before_widget; $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); if ('' !== trim($instance['title'])) { echo $before_title . esc_html($instance['title']) . $after_title; } if (0 == $instance['content_type']) { for ($i = 0; $i < $instance['count']; $i++) { if (!isset($instance['is_link_' . $i]) || empty($instance['is_link_' . $i])) { $instance['is_link_' . $i] = $instance['is_link']; } if (!isset($instance['link_' . $i]) || empty($instance['link_' . $i])) { $instance['link_' . $i] = '#'; } if (!isset($instance['img_' . $i]) || empty($instance['img_' . $i]) || '' == $instance['img_' . $i]) { $instance['img_' . $i] = $instance['empty']; } if (!isset($instance['title_' . $i]) || empty($instance['title_' . $i])) { $instance['title_' . $i] = __('Slide Title', 'sg-window') . ' ' . ($i + 1); } if (!isset($instance['descr_' . $i]) || empty($instance['descr_' . $i])) { $instance['descr_' . $i] = __('description', 'sg-window'); } } } elseif (6 == $instance['content_type']) { //popular posts $i = 0; if (isset($popular_posts)) { foreach ($popular_posts as $post) { if ($i >= $instance['count']) { break; } if (('1' == $instance['is_popular_pages'] || 'post' == get_post_type($post['post_id'])) && 'publish' == get_post_status($post['post_id']) && false == post_password_required($post['post_id']) && 0 != $post['post_id']) { $instance['img_' . $i] = $instance['empty']; if (has_post_thumbnail($post['post_id'])) { $img = wp_get_attachment_image_src(get_post_thumbnail_id($post['post_id']), $instance['image_size']); if ($img) { $instance['img_' . $i] = $img[0]; } } $instance['title_' . $i] = $post['post_title']; $instance['descr_' . $i] = ''; $instance['link_' . $i] = $post['post_permalink']; $instance['is_link_' . $i] = '1'; $instance['cat_' . $i] = ''; if ('1' == $instance['is_cat']) { $categories = get_the_category($post['post_id']); if (!empty($categories)) { $instance['cat_' . $i] = $categories[0]->name; } } $i++; } } } $instance['count'] = $i; } else { $i = 0; while ($curr_query->have_posts()) { $curr_query->the_post(); $instance['img_' . $i] = $instance['empty']; if (has_post_thumbnail() && !post_password_required()) { $img = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), $instance['image_size']); if ($img) { $instance['img_' . $i] = $img[0]; } } $instance['title_' . $i] = get_the_title(); $instance['descr_' . $i] = get_the_excerpt(); $instance['link_' . $i] = get_permalink(); $instance['is_link_' . $i] = '1'; $instance['cat_' . $i] = ''; if ('1' == $instance['is_cat']) { $categories = get_the_category(get_the_ID()); if (!empty($categories)) { $instance['cat_' . $i] = $categories[0]->name; } } $i++; if (3 == $instance['content_type'] && $instance['count'] == $i) { break; } } $instance['count'] = $i; } ?> <div class="sgwindow-slider-wrapper"> <div class="sgwindow-slider" style="margin: 0 <?php echo esc_attr($instance['margin']); ?> %;"> <div class="<?php echo esc_attr($instance['is_play']) . ' ' . absint($instance['speed']) . ' ' . absint($instance['delay']); ?> sgwindow-slider-content" style="padding-bottom:<?php echo esc_attr($instance['height']); ?> %;"> <?php for ($i = 0; $i < $instance['count']; $i++) { ?> <article class="sgwindow-slide"> <?php if ('1' == $instance['is_link_' . $i]) { ?> <a class="slide-link" href="<?php echo esc_url($instance['link_' . $i]); ?> "> <?php } ?> <div class="sgwindow-slide-content" <?php if ('1' == $instance['is_background']) { ?> style="background-image: url(<?php echo esc_url($instance['img_' . $i]); ?> );" <?php } ?> > <?php if ('1' != $instance['is_background']) { ?> <img class="slider-image" src="<?php echo esc_url($instance['img_' . $i]); ?> " alt="" /> <?php } ?> <div class="slider-text-wrap"> <header> <h1 class="slider-title" style="color:<?php echo esc_attr($instance['text_color']); ?> ;"><?php echo esc_attr($instance['title_' . $i]); ?> </h1> </header> <p class="slider-descr" style="color:<?php echo esc_attr($instance['text_color']); ?> ;"><?php echo esc_attr($instance['descr_' . $i]); ?> </p> <?php if ('1' == $instance['is_cat'] && isset($instance['cat_' . $i])) { ?> <p class="slider-cat"><?php echo esc_attr($instance['cat_' . $i]); ?> </p> <?php } ?> </div><!-- .slider-text-wrap --> </div><!-- .sgwindow-slide-content --> <?php if ('1' == $instance['is_link_' . $i]) { ?> </a><!-- .slide-link --> <?php } ?> </article><!-- .sgwindow-slide --> <?php } ?> </div><!-- .sgwindow-slider-content --> <span class="sgwindow-next-button"><span class="genericon genericon-pocket"></span></span> <span class="sgwindow-prev-button"><span class="genericon genericon-pocket"></span></span> <ul class="sgwindow-slider-buttons"> <li class="current"></li> <?php for ($i = 1; $i < $instance['count']; $i++) { ?> <li></li> <?php } ?> </ul><!-- .sgwindow-slider-buttons --> </div><!-- .sgwindow-slider --> </div><!-- .sgwindow-slider-wrapper --> <?php echo $after_widget; if (0 != $instance['content_type'] && 3 != $instance['content_type']) { wp_reset_postdata(); } } }
function stats_dashboard_widget_content() { $blog_id = stats_get_option('blog_id'); if (!($width = (int) ($_GET['width'] / 2)) || $width < 250) { $width = 370; } if (!($height = (int) $_GET['height'] - 36) || $height < 230) { $height = 230; } $_width = $width - 5; $_height = $height - ($GLOBALS['is_winIE'] ? 16 : 5); // hack! $options = stats_dashboard_widget_options(); $q = array('noheader' => 'true', 'proxy' => '', 'page' => 'stats', 'blog' => $blog_id, 'key' => stats_get_api_key(), 'chart' => '', 'unit' => $options['chart'], 'width' => $_width, 'height' => $_height); $url = 'http://dashboard.wordpress.com/wp-admin/index.php'; $url = add_query_arg($q, $url); $get = wp_remote_get($url, array('timeout' => 300)); if (is_wp_error($get) || empty($get['body'])) { $http = $_SERVER['HTTPS'] ? 'https' : 'http'; $src = clean_url("{$http}://dashboard.wordpress.com/wp-admin/index.php?page=estats&blog={$blog_id}&noheader=true&chart&unit={$options['chart']}&width={$_width}&height={$_height}"); echo "<iframe id='stats-graph' class='stats-section' frameborder='0' style='width: {$width}px; height: {$height}px; overflow: hidden' src='{$src}'></iframe>"; } else { $body = stats_convert_post_titles($get['body']); $body = stats_convert_swf_urls($body); $body = stats_convert_chart_urls($body); $body = stats_convert_image_urls($body); echo $body; } $post_ids = array(); if (version_compare('2.7-z', $GLOBALS['wp_version'], '<=')) { $csv_args = array('top' => '&limit=8', 'active' => '&limit=5', 'search' => '&limit=5'); /* translators: Stats dashboard widget postviews list: "$post_title $views Views" */ $printf = __('%1$s %2$s Views', 'stats'); } else { $csv_args = array('top' => '', 'active' => '', 'search' => ''); /* translators: Stats dashboard widget postviews list: "$post_title, $views Views" */ $printf = __('%1$s, %2$s views', 'stats'); } foreach ($top_posts = stats_get_csv('postviews', "days={$options['top']}{$csv_args['top']}") as $post) { $post_ids[] = $post['post_id']; } foreach ($active_posts = stats_get_csv('postviews', "days={$options['active']}{$csv_args['active']}") as $post) { $post_ids[] = $post['post_id']; } // cache get_posts(array('include' => join(',', array_unique($post_ids)))); $searches = array(); foreach ($search_terms = stats_get_csv('searchterms', "days={$options['search']}{$csv_args['search']}") as $search_term) { $searches[] = esc_html($search_term['searchterm']); } ?> <div id="stats-info"> <div id="top-posts" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Top Posts', 'stats'); ?> </h4> <?php foreach ($top_posts as $post) { if (!get_post($post['post_id'])) { continue; } ?> <p><?php printf($printf, '<a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a>', number_format_i18n($post['views'])); ?> </p> <?php } ?> </div> </div> <div id="top-search" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Top Searches', 'stats'); ?> </h4> <p><?php echo join(', ', $searches); ?> </p> </div> </div> <div id="active" class='stats-section'> <div class="stats-section-inner"> <h4 class="heading"><?php _e('Most Active', 'stats'); ?> </h4> <?php foreach ($active_posts as $post) { if (!get_post($post['post_id'])) { continue; } ?> <p><?php printf($printf, '<a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a>', number_format_i18n($post['views'])); ?> </p> <?php } ?> </div> </div> </div> <br class="clear" /> <p class="textright"> <a class="button" href="index.php?page=stats"><?php _e('View All', 'stats'); ?> </a> </p> <?php exit; }
/** * Lecture des stats Jetpack afin d'y récupérer les articles/pages populaires. * * @param int $days Période concernée. * * @return array Tableau d'ID. */ private function getPopularIDs($days) { //Lecture des articles populaires sur la période demandée. $post_view_posts = stats_get_csv('postviews', array('days' => $days, 'limit' => 100)); if (!$post_view_posts) { return array(); } //On récupère les ID. $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $post_view_ids; }
function widget($args, $instance) { extract($args); /* Our variables from the widget settings. */ $number = $instance['number']; echo $before_widget; ?> <div class="tabbed-widget"> <ul class="nav nav-tabs role="tablist""> <li role="presentation" class="active"><a href="#popular" aria-controls="popular" role="tab" data-toggle="tab"><i class="fa fa-fire"></i><?php _e('Popular', 'ta-portfolio'); ?> </a></li> <li role="presentation"><a href="#recent" aria-controls="recent" role="tab" data-toggle="tab"><i class="fa fa-clock-o"></i><?php _e('Recent', 'ta-portfolio'); ?> </a></li> <li role="presentation"><a href="#message" aria-controls="message" role="tab" data-toggle="tab"><i class="fa fa-comments"></i></a></li> </ul> <div class="tab-content"> <div role="tabpanel" id="popular" class="tab-pane active"> <?php if (function_exists('stats_get_csv')) { // get popular posts by WordPress.com states if Jetpack plugin installed. $count = 0; $popular_posts = stats_get_csv('postviews', array('days' => 30, 'limit' => -1)); ?> <div class="post-content"> <?php foreach ($popular_posts as $p) { if ($count >= $number) { break; } if ('post' == get_post_type($p['post_id']) && 'publish' == get_post_status($p['post_id']) && false == post_password_required($p['post_id']) && 0 != $p['post_id']) { ?> <div class="post-content"> <div class="tab-image"> <?php if (has_post_thumbnail($p['post_id'])) { ?> <a href="<?php echo $p['post_permalink']; ?> " title="<?php echo $p['post_title']; ?> "> <?php echo get_the_post_thumbnail($p['post_id'], 'tab-image'); ?> </a> <?php } ?> </div> <div class="post-title"> <i class="fa fa-eye"></i><i><?php echo $p['views'] . ' ' . __('Monthly Views', 'ta-portfolio'); ?> </i> <p><a href="<?php echo $p['post_permalink']; ?> " rel="bookmark" title="<?php echo $p['post_title']; ?> "><?php echo $p['post_title']; ?> </a></p> </div> </div> <?php $count++; } } ?> </div> <?php } else { // get popular posts by comment count. $popular_posts = new WP_Query(array('showposts' => $number, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'has_password' => false, 'orderby' => 'comment_count', 'order' => 'DESC')); while ($popular_posts->have_posts()) { $popular_posts->the_post(); ?> <div class="post-content"> <div class="tab-image"> <?php if (has_post_thumbnail()) { ?> <a href="<?php the_permalink(); ?> " title="<?php the_title_attribute(); ?> "> <?php the_post_thumbnail('tab-image'); ?> </a> <?php } ?> </div> <div class="post-title"> <i class="fa fa-comments-o"></i><?php comments_popup_link(__('Leave a comment', 'ta-portfolio'), __('1 Comment', 'ta-portfolio'), __('% Comments', 'ta-portfolio')); ?> <p><a href="<?php echo get_permalink(); ?> " rel="bookmark" title="<?php the_title(); ?> "><?php the_title(); ?> </a></p> </div> </div> <?php } } ?> </div> <?php wp_reset_query(); ?> <div role="tabpanel" id="recent" class="tab-pane"> <?php $recent_posts = new WP_Query(array('showposts' => $number, 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'has_password' => false)); ?> <?php while ($recent_posts->have_posts()) { $recent_posts->the_post(); ?> <div class="post-content"> <div class="tab-image"> <?php if (has_post_thumbnail()) { ?> <a href="<?php the_permalink(); ?> " title="<?php the_title_attribute(); ?> "> <?php the_post_thumbnail('tab-image'); ?> </a> <?php } ?> </div> <div class="post-title"> <i class="fa fa-clock-o"></i><i><?php the_time('M j, Y'); ?> </i> <p><a href="<?php echo get_permalink(); ?> " rel="bookmark" title="<?php the_title(); ?> "><?php the_title(); ?> </a></p> </div> </div> <?php } ?> </div> <?php wp_reset_query(); ?> <div role="tabpanel" id="message" class="tab-pane"> <?php $recent_comments = get_comments(array('number' => $number, 'status' => 'approve')); ?> <?php foreach ($recent_comments as $comment) { ?> <div class="post-content"> <i class="fa fa-comment-o"></i> <?php if ($comment->comment_author) { echo $comment->comment_author; } else { _e('Anonymous', 'ta-portfolio'); } ?> <?php _e('on', 'ta-portfolio'); ?> <a href="<?php echo get_permalink($comment->comment_post_ID); ?> " rel="bookmark" title="<?php echo get_the_title($comment->comment_post_ID); ?> "> <?php echo get_the_title($comment->comment_post_ID); ?> </a> <p> <i class="fa fa-quote-left"></i> <?php echo wp_trim_words($comment->comment_content, 15); ?> <i class="fa fa-quote-right"></i> </p> </div> <?php } ?> </div> </div> </div> <?php echo $after_widget; }
function db_popular_post_aggregator() { if (function_exists('stats_get_csv')) { global $wpdb; $table_name = $wpdb->base_prefix . 'db_stats'; $blogID = get_current_blog_id(); // get any row with blog ID for date comparison $result = $wpdb->get_row("SELECT * FROM {$table_name} WHERE blog_id = {$blogID} ORDER BY date_added ASC LIMIT 1", ARRAY_A); if (!$result || strtotime($result['date_added']) + 0 < time()) { // supposedly grabbing post views from past 60 months... $top_posts = stats_get_csv('postviews', 'period=month&days=60&limit=-1'); if ($top_posts) { $wpdb->delete($table_name, array('blog_id' => $blogID), array('%d')); $accepted_post_types = array('post', 'premiere'); foreach ($top_posts as $post) { $postID = absint($post['post_id']); $post_views = $post['views']; if ($postID <= 0) { continue; } if (!in_array(get_post_type($postID), $accepted_post_types)) { continue; } $arr = array('blog_id' => $blogID, 'post_id' => $postID, 'views' => $post_views, 'date_added' => date('Y-m-d H:i:s', time())); $wpdb->insert($table_name, $arr, array('%d', '%d', '%d', '%s')); update_post_meta($postID, 'db_weekly_views', $post_views); } } } } die; }
function gazeta_get_post_views($post_id) { if (gazeta_is_allow_viewing() !== true) { return; } // update view_count from wp stats if (isset($post_id) && function_exists('stats_get_csv')) { $random = mt_rand(9999, 999999999); // hack to break cache bug $args = array('days' => $random, 'post_id' => $post_id); $stats = stats_get_csv('postviews', $args); $views = isset($stats['0']['views']) && $stats['0']['views'] > 0 ? $stats['0']['views'] : 0; return absint($views); } return 0; }
function getPostViews($postID) { if (function_exists('the_views') && mom_option('views_by') == 'wpv') { the_views(false); } elseif (function_exists('stats_get_csv') && mom_option('views_by') == 'jetpack') { global $post; $args = array('days' => -1, 'limit' => -1, 'post_id' => $post->ID); $result = stats_get_csv('postviews', $args); $views = $result[0]['views']; return number_format_i18n($views) . ' ' . __('Views', 'framework'); } else { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if ($count == '') { delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 " . __('Views', 'framework'); } return $count . __(' Views', 'framework'); } }
/** * Uses data gathered by Jetpack stats and stored in WordPress.com servers */ static function get_posts_by_wp_com($args) { if (!self::$_stats_enabled || !function_exists('stats_get_csv')) { return array(); } $defaults = array('limit' => 5, 'range' => 'all', 'post_type' => 'post', 'date_format' => get_option('date_format')); $args = wp_parse_args((array) $args, $defaults); $limit = intval($args['limit']); /** TODO: limit $limit to 100? **/ $days = 2; switch ($args['range']) { case 'weekly': $days = 7; break; case 'monthly': $days = 30; break; case 'daily': $days = 2; break; //make this 2 days to account for timezone differences //make this 2 days to account for timezone differences case 'all': default: $days = -1; break; //get all } /** we only limit to 50 posts. but change this if you want **/ $top_posts = stats_get_csv('postviews', array('days' => $days, 'limit' => 50)); if (!$top_posts) { return array(); } /** Store post_id into array **/ $post_view_ids = array_filter(wp_list_pluck($top_posts, 'post_id')); if (!$post_view_ids) { return array(); } // cache get_posts(array('include' => join(',', array_unique($post_view_ids)))); // return posts list $posts = array(); $counter = 0; foreach ($top_posts as $top_post) { //should only trigger for homepage if (empty($top_post['post_id'])) { continue; } $post = get_post($top_post['post_id']); if (!$post) { continue; } if ($args['post_type'] != $post->post_type) { continue; } $permalink = get_permalink($post->ID); $postdate = date_i18n($args['date_format'], strtotime($post->post_date)); $views = number_format_i18n($top_post['views']); if (empty($post->post_title)) { $title_source = $post->post_content; $title = wp_html_excerpt($title_source, 50); $title .= '…'; } else { $title = $post->post_title; } $data = array('title' => $title, 'permalink' => $permalink, 'views' => $views, 'id' => $post->ID, 'postdate' => $postdate); $posts[] = $data; $counter++; if ($counter == $limit) { break; } } return $posts; }
private function get_author_stats($args) { $args = wp_parse_args($args, array('post_status' => 'publish', 'post_type' => 'post', 'posts_per_page' => -1, 'update_post_meta_cache' => false, 'update_post_term_cache' => false, 'no_found_rows' => true)); $authors = array(); $posts = array(); global $post; $query = new WP_Query($args); while ($query->have_posts()) { $query->the_post(); $posts[] = $post; } wp_reset_postdata(); foreach ($posts as $p) { if (!array_key_exists($p->post_author, $authors)) { $author = new WP_User($p->post_author); $authors[$p->post_author] = array('display_name' => $author->display_name, 'post_count' => 0, 'total_pageviews' => 0, 'total_wordcount' => 0); } $authors[$p->post_author]['post_count']++; $authors[$p->post_author]['total_wordcount'] += str_word_count(strip_tags($p->post_content)); } $diff = date_diff(new DateTime($args['date_query']['after']), new DateTime($args['date_query']['before'])); // get page views for the date range if (function_exists('stats_get_csv')) { $args = array('days' => $diff->days, 'period' => 'days', 'end' => date('Y-m-d', strtotime($args['date_query']['before'])), 'limit' => -1); $results = stats_get_csv('postviews', $args); //echo '<!--'; //echo var_export( $args ); //echo var_export( $results, true ); //echo '-->'; if (!empty($results)) { foreach ($results as $result) { $p = get_post($result['post_id']); if (!empty($p) && 'post' === $p->post_type) { if (!array_key_exists($p->post_author, $authors)) { $author = new WP_User($p->post_author); $authors[$p->post_author] = array('display_name' => $author->display_name, 'post_count' => 0, 'total_pageviews' => 0, 'total_wordcount' => 0); } $authors[$p->post_author]['total_pageviews'] += absint($result['views']); } } } } return $authors; }
function cb_get_post_viewcount($cb_post_id) { $cb_stats_src = ot_get_option('cb_misc_stats_source', 'theme'); if ($cb_stats_src != 'theme') { if (function_exists('stats_get_csv')) { if ($cb_args == NULL) { $cb_args = 'period=month&days=104&post_id=' . $cb_post_id; $cb_args = 'days=-1&post_id=' . $cb_post_id; /* CBTEMP */ } $cb_post_stats = 'cb-post-views-t-' . $cb_post_id; if (($cb_post_view_count = get_transient($cb_post_stats)) === false) { $cb_post_view_count = stats_get_csv('postviews', $cb_args); set_transient($cb_post_stats, $cb_post_view_count, 180); } if ($cb_post_view_count[0]['views'] != NULL) { return $cb_post_view_count[0]['views']; } else { return '0'; } } else { return '0'; } } else { $cb_visits = get_post_meta($cb_post_id, 'cb_visit_counter', true); } return $cb_visits; }
function get_by_views($count) { $days = (int) apply_filters('jetpack_top_posts_days', 2); if ($days < 1) { $days = 2; } if ($days > 10) { $days = 10; } $post_view_posts = stats_get_csv('postviews', array('days' => absint($days), 'limit' => 11)); if (!$post_view_posts) { return array(); } $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $this->get_posts($post_view_ids, $count); }
function stats_dashboard_widget_content() { if (!isset($_GET['width']) || !($width = (int) ($_GET['width'] / 2)) || $width < 250) { $width = 370; } if (!isset($_GET['height']) || !($height = (int) $_GET['height'] - 36) || $height < 230) { $height = 180; } $_width = $width - 5; $_height = $height - ($GLOBALS['is_winIE'] ? 16 : 5); // hack! $options = stats_dashboard_widget_options(); $blog_id = Jetpack_Options::get_option('id'); $q = array('noheader' => 'true', 'proxy' => '', 'blog' => $blog_id, 'page' => 'stats', 'chart' => '', 'unit' => $options['chart'], 'color' => get_user_option('admin_color'), 'width' => $_width, 'height' => $_height, 'ssl' => is_ssl(), 'j' => sprintf('%s:%s', JETPACK__API_VERSION, JETPACK__VERSION)); $url = 'https://' . STATS_DASHBOARD_SERVER . "/wp-admin/index.php"; $url = add_query_arg($q, $url); $method = 'GET'; $timeout = 90; $user_id = JETPACK_MASTER_USER; $get = Jetpack_Client::remote_request(compact('url', 'method', 'timeout', 'user_id')); $get_code = wp_remote_retrieve_response_code($get); if (is_wp_error($get) || 2 != intval($get_code / 100) && 304 != $get_code || empty($get['body'])) { stats_print_wp_remote_error($get, $url); } else { $body = stats_convert_post_titles($get['body']); $body = stats_convert_chart_urls($body); $body = stats_convert_image_urls($body); echo $body; } $post_ids = array(); $csv_end_date = date('Y-m-d', current_time('timestamp')); $csv_args = array('top' => "&limit=8&end={$csv_end_date}", 'search' => "&limit=5&end={$csv_end_date}"); /* translators: Stats dashboard widget postviews list: "$post_title $views Views" */ $printf = __('%1$s %2$s Views', 'jetpack'); foreach ($top_posts = stats_get_csv('postviews', "days={$options['top']}{$csv_args['top']}") as $i => $post) { if ($post['post_id'] == 0) { unset($top_posts[$i]); continue; } $post_ids[] = $post['post_id']; } // cache get_posts(array('include' => join(',', array_unique($post_ids)))); $searches = array(); foreach ($search_terms = stats_get_csv('searchterms', "days={$options['search']}{$csv_args['search']}") as $search_term) { if ($search_term['searchterm'] == 'encrypted_search_terms') { continue; } $searches[] = esc_html($search_term['searchterm']); } ?> <a class="button" href="admin.php?page=stats"><?php _e('View All', 'jetpack'); ?> </a> <div id="stats-info"> <div id="top-posts" class='stats-section'> <div class="stats-section-inner"> <h3 class="heading"><?php _e('Top Posts', 'jetpack'); ?> </h3> <?php if (empty($top_posts)) { ?> <p class="nothing"><?php _e('Sorry, nothing to report.', 'jetpack'); ?> </p> <?php } else { foreach ($top_posts as $post) { if (!get_post($post['post_id'])) { continue; } ?> <p><?php printf($printf, '<a href="' . get_permalink($post['post_id']) . '">' . get_the_title($post['post_id']) . '</a>', number_format_i18n($post['views'])); ?> </p> <?php } } ?> </div> </div> <div id="top-search" class='stats-section'> <div class="stats-section-inner"> <h3 class="heading"><?php _e('Top Searches', 'jetpack'); ?> </h3> <?php if (empty($searches)) { ?> <p class="nothing"><?php _e('Sorry, nothing to report.', 'jetpack'); ?> </p> <?php } else { ?> <p><?php echo join(', ', $searches); ?> </p> <?php } ?> </div> </div> </div> <div class="clear"></div> <?php exit; }
function get_by_views($count, $args) { if (defined('IS_WPCOM') && IS_WPCOM) { global $wpdb; $post_views = wp_cache_get("get_top_posts_{$count}", 'stats'); if (false === $post_views) { $post_views = array_shift(stats_get_daily_history(false, get_current_blog_id(), 'postviews', 'post_id', false, 2, '', $count * 2 + 10, true)); unset($post_views[0]); wp_cache_add("get_top_posts_{$count}", $post_views, 'stats', 1200); } return $this->get_posts(array_keys($post_views), $count); } /** * Filter the number of days used to calculate Top Posts for the Top Posts widget. * We do not recommend accessing more than 10 days of results at one. * When more than 10 days of results are accessed at once, results should be cached via the WordPress transients API. * Querying for -1 days will give results for an infinite number of days. * * @module widgets * * @since 3.9.3 * * @param int 2 Number of days. Default is 2. * @param array $args The widget arguments. */ $days = (int) apply_filters('jetpack_top_posts_days', 2, $args); /** Handling situations where the number of days makes no sense - allows for unlimited days where $days = -1 */ if (0 == $days || false == $days) { $days = 2; } $post_view_posts = stats_get_csv('postviews', array('days' => absint($days), 'limit' => 11)); if (!$post_view_posts) { return array(); } $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $this->get_posts($post_view_ids, $count); }
function cb_get_post_viewcount($cb_post_id, $cb_args = NULL) { if (function_exists('stats_get_csv')) { if ($cb_args == NULL) { $cb_args = 'period=month&days=104&post_id=' . $cb_post_id; $cb_args = 'days=-1&post_id=' . $cb_post_id; /* CBTEMP */ } $cb_post_stats = 'cb-post-views-t-' . $cb_post_id; if (($cb_post_view_count = get_transient($cb_post_stats)) === false) { $cb_post_view_count = stats_get_csv('postviews', $cb_args); set_transient($cb_post_stats, $cb_post_view_count, 180); } if ($cb_post_view_count[0]['views'] != NULL) { $cb_view_word = sprintf(_n('views', 'views', $cb_post_view_count[0]['views'], 'cubell'), $cb_post_view_count[0]['views']); return $cb_post_view_count[0]['views'] . ' ' . $cb_view_word; } else { $cb_view_word = sprintf(_n('views', 'views', 0, 'cubell'), 0); return '0 ' . $cb_view_word; } } else { return NULL; } }
function get_by_views($count, $args) { if (defined('IS_WPCOM') && IS_WPCOM) { global $wpdb; $post_views = wp_cache_get("get_top_posts_{$count}", 'stats'); if (false === $post_views) { $post_views = array_shift(stats_get_daily_history(false, get_current_blog_id(), 'postviews', 'post_id', false, 2, '', $count * 2 + 10, true)); unset($post_views[0]); wp_cache_add("get_top_posts_{$count}", $post_views, 'stats', 1200); } return $this->get_posts(array_keys($post_views), $count); } /** * Filter the number of days used to calculate Top Posts for the Top Posts widget. * * @module widgets * * @since 3.9.3 * * @param int 2 Number of days. Default is 2. * @param array $args The widget arguments. */ $days = (int) apply_filters('jetpack_top_posts_days', 2, $args); if ($days < 1) { $days = 2; } if ($days > 10) { $days = 10; } $post_view_posts = stats_get_csv('postviews', array('days' => absint($days), 'limit' => 11)); if (!$post_view_posts) { return array(); } $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $this->get_posts($post_view_ids, $count); }
function get_post_views() { $post_stats = array(); $postdata = array(); // Hack to break cache suggested by Glisse. // Since 'limit' is capped at 500, use it to break cache for each interval. // http://wordpress.org/support/topic/post-views-not-updating $random = rand(500, 99999); // Get stats using the stats_get_csv function if (function_exists('stats_get_csv') && $this->settings['use_stats_get_csv']) { // Get post views for each interval: Unlimited, Day, Week, Month, Year foreach ($this->interval as $key => $value) { $args = array('days' => $value, 'limit' => $random, 'summarize' => 1); $post_stats[$key] = stats_get_csv('postviews', $args); } $this->updateMessages[-2] = "Stats being updated using the stats_get_csv function"; } else { $args = $this->apiArgs; $args['api_key'] = $this->settings['api_key']; $args['limit'] = $random; // Get the stats using the blog_uri if ($this->settings['connect_blog_uri'] && $this->settings['use_blog_uri']) { $args['blog_uri'] = $this->settings['blog_uri']; $this->updateMessages[-2] = "Stats being updated using blog_uri"; } else { if ($this->settings['connect_blog_id']) { $args['blog_id'] = $this->settings['blog_id']; $this->updateMessages[-2] = "Stats being updated using blog_id"; } else { return; } } // Get post views for each interval: Unlimited, Day, Week, Month, Year foreach ($this->interval as $key => $value) { $args['days'] = $value; $url = add_query_arg($args, $this->apiUrl); $json = wp_remote_get($url); $data = json_decode($json['body'], true); $post_stats[$key] = $data[0]['postviews']; } } $this->updateMessages[-1] = $post_stats; global $post; // Create an array indexed by interval and then post_id foreach ($post_stats as $key => $value) { $postdata[$key] = array(); foreach ($value as $postinfo) { $postdata[$key][$postinfo['post_id']] = strip_tags($postinfo['views']); } } // Get all posts and update them $post_types = get_post_types(array('_builtin' => false), 'names'); $post_types['post'] = 'post'; $args = array('numberposts' => -1, 'post_type' => $post_types, 'post_status' => 'publish'); $allposts = get_posts($args); foreach ($allposts as $post) { $message = "'" . get_the_title($post->ID) . "' updated with stats:"; // Cannot save the interval data as an array in a meta key because WP cannot sort post queries by an array. // Have to store each interval data in it's own meta key. // http://wordpress.stackexchange.com/questions/99149/wp-query-meta-query-by-array-key foreach ($this->interval as $key => $value) { // Ensure that the $post-ID exists as a key in the array before trying to update post information. // This prevents the user from pulling data from another website and trying to add it to their own // posts. if (array_key_exists($post->ID, $postdata[$key])) { $newViews = intval($postdata[$key][$post->ID]); // Unlimited meta key different as to not break sites that used this previously if ($key == 'Unlimited') { $oldViews = get_post_meta($post->ID, 'jetpack-post-views', true); // Only update posts with new stats. Prevents posts from being updated with '0' views when the API service is down. if ($newViews < $oldViews) { $newViews = $oldViews; } update_post_meta($post->ID, 'jetpack-post-views', $newViews); } else { // Always update non-unlimited intervals since they can fluctuate update_post_meta($post->ID, 'jetpack-post-views-' . $key, $newViews); } $message .= " {$key}({$newViews})"; } else { $message .= " {$key}(not updated)"; } } $this->updateMessages[$post->ID] = $message; } }
function get_by_views($count) { global $wpdb; $post_view_posts = stats_get_csv('postviews', array('days' => 2, 'limit' => 10)); if (!$post_view_posts) { return array(); } $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $this->get_posts($post_view_ids, $count); }
function widget($args, $instance) { extract($args); extract($instance); // The function `stats_get_csv` is provided by the Jetpack plugin. // This widget is not enabled if this function does not exist. // - Note the `stats_get_csv` function caches its results for `300` seconds based on its input parameters // The `stats_get_csv` functions also fetches pages, so we have to accommodate for them and remove them from the results if ($this->jetpackInstalled()) { $popular = $this->filterResults(stats_get_csv('postviews', array('days' => self::DAYS, 'limit' => self::FETCH))); } else { echo '<!--'; } // For development purposes, if there aren't any top posts then default to the latest posts. //if ( ! $popular || sizeof( $popular ) < $items ) // $popular = wp_get_recent_posts( array( 'numberposts' => $items, 'post_status' => 'publish' ) , OBJECT ); $title = apply_filters('widget_title', $title); ?> <?php echo $before_widget; ?> <h2><?php echo $title; ?> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24.02px" height="16.794px" viewBox="0 0 24.02 16.794" enable-background="new 0 0 24.02 16.794" xml:space="preserve"> <path fill="none" d="M1076.826-836c0,0.736,0.598,1.334,1.334,1.334c0.737,0,1.335-0.598,1.335-1.334v-6.666 c0-0.088-0.009-0.176-0.026-0.262c-0.008-0.039-0.023-0.077-0.034-0.115c-0.013-0.045-0.023-0.09-0.041-0.133 c-0.02-0.046-0.046-0.088-0.069-0.131c-0.018-0.033-0.032-0.067-0.053-0.099c-0.099-0.146-0.225-0.272-0.371-0.37 c-0.031-0.021-0.066-0.036-0.1-0.054c-0.043-0.023-0.084-0.05-0.13-0.069c-0.044-0.018-0.089-0.027-0.134-0.041 c-0.038-0.011-0.075-0.025-0.115-0.034c-0.086-0.017-0.174-0.026-0.262-0.026h-6.672c-0.737,0-1.334,0.597-1.334,1.334 c0,0.736,0.597,1.333,1.334,1.333h3.451l-8.789,8.781l-3.06-3.058c-0.521-0.521-1.366-0.521-1.888,0l-5.338,5.333 c-0.521,0.521-0.521,1.365,0,1.885c0.261,0.261,0.603,0.391,0.944,0.391c0.341,0,0.683-0.13,0.943-0.391l4.394-4.391l3.061,3.058 c0.521,0.521,1.365,0.521,1.887,0l9.732-9.724V-836z"/> <path fill="#F58433" d="M21.351,8c0,0.736,0.598,1.334,1.334,1.334c0.737,0,1.335-0.598,1.335-1.334V1.334 c0-0.088-0.009-0.176-0.026-0.262c-0.008-0.039-0.023-0.077-0.034-0.115c-0.013-0.045-0.023-0.09-0.041-0.133 c-0.02-0.046-0.046-0.088-0.069-0.131c-0.018-0.033-0.032-0.067-0.053-0.099c-0.099-0.146-0.225-0.272-0.371-0.37 c-0.031-0.021-0.066-0.036-0.1-0.054c-0.043-0.023-0.084-0.05-0.13-0.069c-0.044-0.018-0.089-0.027-0.134-0.041 c-0.038-0.011-0.075-0.025-0.115-0.034C22.861,0.009,22.773,0,22.685,0h-6.672c-0.737,0-1.334,0.597-1.334,1.334 c0,0.736,0.597,1.333,1.334,1.333h3.451l-8.789,8.781l-3.06-3.058c-0.521-0.521-1.366-0.521-1.888,0L0.39,13.724 c-0.521,0.521-0.521,1.365,0,1.885C0.651,15.87,0.993,16,1.334,16c0.341,0,0.683-0.13,0.943-0.391l4.394-4.391l3.061,3.058 c0.521,0.521,1.365,0.521,1.887,0l9.732-9.724V8z"/> </svg> </h2> <ul class="popular-posts"> <?php if (is_array($popular)) { foreach ($popular as $index => $post) { if ($index >= $instance['items']) { break; } ?> <?php print_r($post); $post_permalink = get_permalink($post->ID); ?> <li> <a class="widget-thumbnail" href="<?php echo $post_permalink; ?> " title="<?php echo esc_attr($post->post_title); ?> "> <?php if (has_post_thumbnail($post->ID)) { ?> <?php echo get_the_post_thumbnail($post->ID, 'thumbnail'); ?> <?php } ?> <a class="widget-link" href="<?php echo $post_permalink; ?> " title="<?php echo esc_attr($post->post_title); ?> "> <?php echo $post->post_title; ?> <p><small><?php echo $this->convertViews($post->views); ?> </small></p> </a> </li> <?php } } ?> </ul> <?php echo $after_widget; if (!$this->jetpackInstalled()) { echo '-->'; } ?> <?php }
function get_by_views($count) { /** * Filter the number of days used to calculate Top Posts for the Top Posts widget. * * @since 2.8.0 * * @param int 2 Number of days. Default is 2. */ $days = (int) apply_filters('jetpack_top_posts_days', 2); if ($days < 1) { $days = 2; } if ($days > 10) { $days = 10; } $post_view_posts = stats_get_csv('postviews', array('days' => absint($days), 'limit' => 11)); if (!$post_view_posts) { return array(); } $post_view_ids = array_filter(wp_list_pluck($post_view_posts, 'post_id')); if (!$post_view_ids) { return array(); } return $this->get_posts($post_view_ids, $count); }
/** * Archive Meta. * * @since SG Diamond 1.0.0 */ function sgwindow_posted_on() { $is_author = is_singular() ? '1' == sgwindow_get_theme_mod('is_author') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_author') ? true : false); $is_date = is_singular() ? '1' == sgwindow_get_theme_mod('is_date') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_date') ? true : false); $is_views = is_singular() ? '1' == sgwindow_get_theme_mod('is_views') ? true : false : ('1' == sgwindow_get_theme_mod('blog_is_views') ? true : false); $views = null; if ($is_views) { if ('1' == sgwindow_get_theme_mod('is_views')) { if (class_exists('Jetpack') && Jetpack::is_module_active('stats') && function_exists('stats_get_csv')) { $result = stats_get_csv('postviews', 'post_id=' . get_the_ID() . '&limit=-1&summarize'); $views = '<span class="post-views">' . esc_attr(number_format_i18n($result[0]['views'])) . '</span>'; } } } if ('1' == sgwindow_get_theme_mod('is_cat') && (is_home() || is_archive() || is_search())) { $categories = get_the_category(get_the_ID()); if (!empty($categories)) { echo '<a href="' . esc_url(get_category_link($categories[0]->term_id)) . '"><span class="post-cat' . ($is_date || isset($views) || $is_author ? ' post-sep' : '') . '">' . esc_attr($categories[0]->name) . '</span>'; } } if ($is_author) { echo '<a href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '"><span class="post-author' . ($is_date || isset($views) ? ' post-sep' : '') . '">' . esc_attr(get_the_author()) . '</span></a>'; } if ($is_date) { echo '<a href="' . esc_url(get_permalink()) . '"><span class="post-date' . (isset($views) ? ' post-sep' : '') . '">' . esc_attr(get_the_date()) . '</span></a>'; } if (isset($views)) { echo $views; } }