public static function the_content($content) { global $post; $medium_post = Medium_Post::get_by_wp_id($post->ID); if ($medium_post->id && $medium_post->cross_link) { $content = Medium_View::render("content-cross-linked", array("content" => $content, "medium_post" => $medium_post)); } return $content; }
/** * Creates a post on Medium. */ public static function cross_post($post, $medium_post, $medium_user) { $tag_data = wp_get_post_tags($post->ID); $tags = array(); foreach ($tag_data as $tag) { if ($tag->taxonomy == "post_tag") { $tags[] = $tag->name; } } $permalink = get_permalink($post->ID); $content = Medium_View::render("content-rendered-post", array("title" => $post->post_title, "content" => self::_prepare_content($post), "cross_link" => $medium_post->cross_link == "yes", "site_name" => get_bloginfo('name'), "permalink" => $permalink), true); $body = array("title" => $post->post_title, "content" => $content, "tags" => $tags, "contentFormat" => "html", "canonicalUrl" => $permalink, "license" => $medium_post->license, "publishStatus" => $medium_post->status); $data = json_encode($body); $headers = array("Authorization: Bearer " . $medium_user->token, "Content-Type: application/json", "Accept: application/json", "Accept-Charset: utf-8", "Content-Length: " . strlen($data)); $curl = curl_init(); curl_setopt_array($curl, array(CURLOPT_URL => "https://api.medium.com/v1/users/" . $medium_user->id . "/posts", CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $data)); $result = curl_exec($curl); curl_close($curl); $payload = json_decode($result); if ($payload->errors) { $error = $payload->errors[0]; throw new Exception($error->message, $error->code); } return $payload->data; }
/** * Creates a post on Medium. */ public static function cross_post($post, $medium_post, $medium_user) { $tag_data = wp_get_post_terms($post->ID, array("post_tag", "slug")); $tags = array(); $slugs = array(); foreach ($tag_data as $tag) { if ($tag->taxonomy == "post_tag") { $tags[] = $tag->name; } elseif ($tag->taxonomy == "slug") { // For installations that have the custom taxonomy "slug", ensure that // these are are the head of the tag list. $slugs[] = $tag->name; } } $tags = array_values(array_unique(array_merge($slugs, $tags))); if (class_exists('CoAuthors_Guest_Authors')) { // Handle guest-authors if the CoAuthors Plus plugin is installed. $coauthors = get_coauthors($post->ID); $primary_author = $coauthors[0]; if ($primary_author->type == "guest-author") { $medium_post->byline_name = $primary_author->display_name; $medium_post->byline_email = $primary_author->user_email; } } $permalink = get_permalink($post->ID); $content = Medium_View::render("content-rendered-post", array("title" => $post->post_title, "content" => self::_prepare_content($post), "cross_link" => $medium_post->cross_link == "yes", "site_name" => get_bloginfo('name'), "permalink" => $permalink, "byline" => $medium_post->byline_name), true); $body = array("title" => $post->post_title, "content" => $content, "tags" => $tags, "contentFormat" => "html", "canonicalUrl" => $permalink, "license" => $medium_post->license, "publishStatus" => $medium_post->status, "publishedAt" => mysql2date('c', $post->post_date), "notifyFollowers" => $medium_post->follower_notification == "yes"); $data = json_encode($body); if ($medium_post->publication_id != NO_PUBLICATION) { $path = "/v1/publications/{$medium_post->publication_id}/posts"; } else { $path = "/v1/users/{$medium_user->id}/posts"; } try { $created_medium_post = self::_medium_request("POST", $path, $medium_user->token, $data, array("Content-Type" => "application/json")); } catch (Exception $e) { // Retry once if we got a timeout if ($e->getCode() == -2) { error_log("RETRYING POST {$post->ID} '{$post->post_title}' due to timeout, delaying..."); sleep(5); $created_medium_post = self::_medium_request("POST", $path, $medium_user->token, $data, array("Content-Type" => "application/json")); } else { throw $e; } } $medium_post->id = $created_medium_post->id; // Don't derail the migration just because of a claims failure try { if ($medium_post->byline_email) { // Create a claim for the post, if necessary. self::create_post_claim($medium_post, $medium_user, $medium_post->byline_email); } } catch (Exception $e) { error_log("ERROR: Claim call failed {$e->getMessage}(), {$e->getCode}()"); } return $created_medium_post; }
public static function shortcode_cross_link($attributes) { return Medium_View::render("content-cross-linked", array("url" => $attributes["url"]), true); }
/** * Creates a post on Medium. */ public static function cross_post($post, $medium_post, $medium_user) { $tag_data = wp_get_post_tags($post->ID); $tags = array(); foreach ($tag_data as $tag) { if ($tag->taxonomy == "post_tag") { $tags[] = $tag->name; } } $permalink = get_permalink($post->ID); $content = Medium_View::render("content-rendered-post", array("title" => $post->post_title, "content" => self::_prepare_content($post), "cross_link" => $medium_post->cross_link == "yes", "site_name" => get_bloginfo('name'), "permalink" => $permalink), true); $body = array("title" => $post->post_title, "content" => $content, "tags" => $tags, "contentFormat" => "html", "canonicalUrl" => $permalink, "license" => $medium_post->license, "publishStatus" => $medium_post->status, "publishedAt" => mysql2date('c', $post->post_date), "notifyFollowers" => $medium_post->follower_notification == "yes"); $data = json_encode($body); $headers = array("Authorization" => "Bearer " . $medium_user->token, "Content-Type" => "application/json", "Accept" => "application/json", "Accept-Charset" => "utf-8"); if ($medium_post->publication_id != NO_PUBLICATION) { $path = "/publications/{$medium_post->publication_id}/posts"; } else { $path = "/users/{$medium_user->id}/posts"; } $response = wp_remote_post("https://api.medium.com/v1{$path}", array("headers" => $headers, "body" => $data, "user-agent" => "MonkeyMagic/1.0")); return self::_handle_response($response); }