/** * Generates the shortlink for the post specified by $post_id. * * @since 0.1 * * @param int $post_id The post ID we need a shortlink for. * * @return bool|string Returns the shortlink on success. */ function wpbitly_generate_shortlink($post_id) { $wpbitly = wpbitly(); // Avoid creating shortlinks during an autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // or for revisions if (wp_is_post_revision($post_id)) { return; } // Token hasn't been verified, bail if (!$wpbitly->get_option('authorized')) { return; } // Verify this is a post we want to generate short links for if (!in_array(get_post_type($post_id), $wpbitly->get_option('post_types')) || !in_array(get_post_status($post_id), array('publish', 'future', 'private'))) { return; } // We made it this far? Let's get a shortlink $permalink = get_permalink($post_id); $shortlink = get_post_meta($post_id, '_wpbitly', true); $token = $wpbitly->get_option('oauth_token'); if (!empty($shortlink)) { $url = sprintf(wpbitly_api('expand'), $token, $shortlink); $response = wpbitly_get($url); wpbitly_debug_log($response, '/expand/'); if ($permalink == $response['data']['expand'][0]['long_url']) { return $shortlink; } } $url = sprintf(wpbitly_api('shorten'), $token, urlencode($permalink)); $response = wpbitly_get($url); wpbitly_debug_log($response, '/shorten/'); if (is_array($response)) { $shortlink = $response['data']['url']; update_post_meta($post_id, '_wpbitly', $shortlink); } return $shortlink; }
/** * Handles the display of the metabox. * * @since 2.0 * * @param object $post WordPress passed $post object * @param array $args Passed by our call to add_meta_box(), just the $shortlink in this case. */ public function display_metabox($post, $args) { $wpbitly = wpbitly(); $shortlink = $args['args'][0]; // Look for a clicks response $url = sprintf(wpbitly_api('link/clicks'), $wpbitly->get_option('oauth_token'), $shortlink); $response = wpbitly_get($url); if (is_array($response)) { $clicks = $response['data']['link_clicks']; } // Look for referring domains metadata $url = sprintf(wpbitly_api('link/refer'), $wpbitly->get_option('oauth_token'), $shortlink); $response = wpbitly_get($url); if (is_array($response)) { $refer = $response['data']['referring_domains']; } echo '<label class="screen-reader-text" for="new-tag-post_tag">' . __('Bitly Statistics', 'wp-bitly') . '</label>'; if (isset($clicks) && isset($refer)) { echo '<p>' . __('Global click through:', 'wp-bitly') . ' <strong>' . $clicks . '</strong></p>'; if (!empty($refer)) { echo '<h4 style="padding-bottom: 3px; border-bottom: 4px solid #eee;">' . __('Your link was shared on', 'wp-bitly') . '</h4>'; foreach ($refer as $domain) { if (isset($domain['url'])) { printf('<a href="%1$s" target="_blank" title="%2$s">%2$s</a> (%3$d)<br>', $domain['url'], $domain['domain'], $domain['clicks']); } else { printf('<strong>%1$s</strong> (%2$d)<br>', $domain['domain'], $domain['clicks']); } } } } else { echo '<p class="error">' . __('There was a problem retrieving information about your link. There may be no statistics yet.', 'wp-bitly') . '</p>'; } }