Added Tumblr Widget…
-
Take a look at at the left side of my page and you’ll notice ‘My Jets Tumblr’ title, the text format is not vivid like the other titles. I belive the code (below) is a hard one. I understand I have to change something in the code but don’t know exactly. Would anyone know?
`<?php
/**
* Plugin Name: Tumblr Widget
* Plugin URI: https://gabrielroth.com/tumblr-widget-for-wordpress/
* Description: Displays a Tumblr on a WordPress page.
* Version: 1.4.5
* Author: Gabriel Roth
* Author URI: https://gabrielroth.com
*/
/* Copyright 2009 GABRIEL ROTH (email : [email protected])This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/add_action( ‘widgets_init’, ‘load_tumblr_widget’ );
function load_tumblr_widget() {
register_widget( ‘Tumblr_Widget’ );
}class Tumblr_Widget extends WP_Widget {
function Tumblr_Widget() {
$widget_ops = array( ‘classname’ => ‘Tumblr’, ‘description’ => ‘Displays a Tumblr on a WordPress page.’ );
$control_ops = array( ‘width’ => 300, ‘height’ => 350, ‘id_base’ => ‘tumblr-widget’ );
$this->WP_Widget( ‘tumblr-widget’, ‘Tumblr Widget’, $widget_ops, $control_ops );
}function widget( $args, $instance ) {
if (!function_exists(‘simplexml_load_string’)) {
if (!$hide_errors) {
echo “SimpleXML is not enabled on this website. Tumblr Widget requires SimpleXML to function.”;
exit;
}
}function link_to_tumblr($post_url, $time) {
echo ‘<p>‘.date(‘m/d/y’, intval($time)).’</p>’;
}$tumblrcache = get_option(‘tumblrcache’);
/* Set up variables and arguments */
extract( $args );
$title = apply_filters(‘widget_title’, $instance[‘title’] );
$tumblr = $instance[‘tumblr’];
$tumblr = rtrim($tumblr, “/ \t\n\r”);
$photo_size = $instance[‘photo_size’];
$show_regular = $instance[‘show_regular’];
$show_photo = $instance[‘show_photo’];
$show_quote = $instance[‘show_quote’];
$show_link = $instance[‘show_link’];
$show_conversation = $instance[‘show_conversation’];
$show_audio = $instance[‘show_audio’];
$show_video = $instance[‘show_video’];
$inline_styles = $instance[‘inline_styles’];
$show_time = $instance[‘show_time’];
$number = $instance[‘number’];
$video_width = $instance[‘video_width’];
$link_title = $instance[‘link_title’];
$hide_errors = $instance[‘hide_errors’];$types = array (
“regular” => $show_regular,
“photo” => $show_photo,
“quote” => $show_quote,
“link” => $show_link,
“conversation” => $show_conversation,
“audio” => $show_audio,
“video” => $show_video,
);/* If the cache was last updated more than one minute ago … */
if ( $tumblrcache[‘lastcheck’] < ( mktime() – 60 ) ) {
$count = 0;
foreach( $types as $type ) {
if ($type)
$count++;
}
/* clean up Tumblr URL */
if ( strpos($tumblr, “https://”) === 0 )
$tumblr = substr($tumblr, 7);
$tumblr = rtrim($tumblr, “/”);/* if there’s only one category, get the next $number posts in that category */
if ( $count == 1 ) {
foreach ( $types as $type => $value ) {
if ( $value )
$the_type = $type;
}
$request_url = “https://”.$tumblr.”/api/read?num=”.$number.”&type=”.$the_type;
}/* if all seven categories are checked, get the next $number posts in all categories */
elseif ( $count == 7 ) {
$request_url = “https://”.$tumblr.”/api/read?num=”.$number;
}/* if there are 2-6 categories, get the next 50 posts and we’ll keep count of how many are displayed. */
else {
$request_url = “https://”.$tumblr.”/api/read?num=50″;
}/* make request using WP_HTTP */
$request = new WP_Http;
$result = $request->request( $request_url );if ( is_wp_error($result) ) {
echo “Error: ” . $result->get_error_message();
return;
}if ( strpos($result[‘body’], “<!DOCT”) !== 0 ) {
$tumblrcache[‘xml’] = $result[‘body’];
$tumblrcache[‘lastcheck’] = mktime();
update_option(‘tumblrcache’, $tumblrcache);
}
} // end if/* Using the cached version, whether or not it was just updated. */
$xml_string = $tumblrcache[‘xml’];
try {
$xml = simplexml_load_string($xml_string);
} catch (Exception $e) {
//Ignore the error and insure $xml is null
$xml == null;
}if ( !empty($xml) ) {
/* Preliminary HTML */
echo $before_widget;
if ( $title ) {
echo $before_title;
if ( $link_title ) {
echo “” . $title . ““;
} else {
echo $title;
}
echo $after_title;
}
echo ‘- ‘;
$post_count = 0;/* Starting to loop through the posts */
foreach ( $xml->posts->post as $post ) {if ( $post_count < $number ) {
/* Get post type and other info from XML attributes and store in variables */
foreach ($post->attributes() as $key => $value) {
if ( $key == “type” )
$type = $value;
if ( $key == “unix-timestamp” )
$time = $value;
if ( $key == “url” )
$post_url = $value;
}/* Now we set up methods for displaying each type of post … */
// REGULAR POSTS
if ( $type == “regular” && $show_regular ) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ( $inline_styles ) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$post_title = $post->{‘regular-title’};
$body = $post->{‘regular-body’};
echo ‘<h3>’.$post_title.'</h3><p>’.$body.'</p>’;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// PHOTO POSTS
if ( $type == “photo” && $show_photo ) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$caption = $post->{‘photo-caption’};
foreach ($post->{‘photo-url’} as $this_url) {
foreach ($this_url->attributes() as $key => $value) {
if ($value == $photo_size) {
$url = $this_url;
}
if ($value == 500) {
$link_url = $this_url;
}
}
}
echo ‘<img src=”‘.$url.'” alt=”photo from Tumblr” />
‘.$caption.’
‘;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// QUOTE POSTS
if ($type == “quote” && $show_quote) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$text = $post->{‘quote-text’};
$source = $post->{‘quote-source’};
echo ‘<p>‘.$text.’
‘.$source.'</p>’;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// LINK POSTS
if ($type == “link” && $show_link) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$text = $post->{‘link-text’};
$url = $post->{‘link-url’};
$description = $post->{‘link-description’};
echo ‘<p>‘.$text.’ ‘.$description.'</p>’;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// CONVERSATION POSTS
if ($type == “conversation” && $show_conversation) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$title = $post->{‘conversation-title’};
if ($title) {
echo ‘<h3>’.$title.'</h3>’;
}
foreach ($post->conversation->line as $line) {
foreach ($line->attributes() as $key => $value) {
if ($key == “label”) {
$name = $value;
}
}
echo ‘‘.$name.’ ‘.$line.’
‘;
}
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// VIDEO POSTS
if ($type == “video” && $show_video) {echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$caption = $post->{‘video-caption’};
$player = $post->{‘video-player’};if ($video_width) {
if ( $video_width < 50 ) $video_width = 50;
$pattern = ‘/width=”(\d+)” height=”(\d+)”/’;
preg_match($pattern, $player, $matches);
$old_width = $matches[1];
$old_height = $matches[2];
$new_height = $old_height * ($video_width / $old_width );
$replacement = ‘width=”‘ . $video_width . ‘” height=”‘ . $new_height . ‘”‘;
$player = preg_replace($pattern, $replacement, $player);
}
$source = $post->{‘video-source’};
echo $player.”
“.$caption.”
“;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}// AUDIO POSTS
if ($type == “audio” && $show_video) {
echo ‘<li class=”tumblr_post ‘.$type.'” ‘;
if ($inline_styles) {
echo ‘style=”padding:8px 0″‘;
}
echo ‘>’;
$caption = $post->{‘audio-caption’};
$player = $post->{‘audio-player’};
echo $player.”
“.$caption.”
“;
if ($show_time) {
link_to_tumblr($post_url, $time);
}
echo ”;
$post_count++;
}
} // end of loop
} // $post_count == number;
// end of widget
echo ‘
‘.$after_widget;
} else {
if (!$hide_errors) {
echo ‘<span class=”error”>Sorry, we\’re having trouble loading this Tumblr.</span>’;
}
}
}// saves widget settings
function update( $new_instance, $old_instance ) {
$instance = $old_instance;if ($new_instance[‘tumblr’] != $instance[‘tumblr’]) {
delete_option(‘tumblrcache’);
}$instance[‘title’] = strip_tags( $new_instance[‘title’] );
$instance[‘tumblr’] = strip_tags( $new_instance[‘tumblr’] );
$instance[‘photo_size’] = $new_instance[‘photo_size’];
$instance[‘show_regular’] = $new_instance[‘show_regular’];
$instance[‘show_photo’] = $new_instance[‘show_photo’];
$instance[‘show_quote’] = $new_instance[‘show_quote’];
$instance[‘show_link’] = $new_instance[‘show_link’];
$instance[‘show_conversation’] = $new_instance[‘show_conversation’];
$instance[‘show_audio’] = $new_instance[‘show_audio’];
$instance[‘show_video’] = $new_instance[‘show_video’];
$instance[‘inline_styles’] = $new_instance[‘inline_styles’];
$instance[‘show_time’] = $new_instance[‘show_time’];
$instance[‘number’] = $new_instance[‘number’];
$instance[‘video_width’] = $new_instance[‘video_width’];
$instance[‘link_title’] = $new_instance[‘link_title’];
$instance[‘hide_errors’] = $new_instance[‘hide_errors’];return $instance;
}// creates controls form
function form( $instance ) {// defaults
$defaults = array( ‘title’=>’My Tumblr’, ‘tumblr’=>’demo.tumblr.com’, ‘show_regular’ => true, ‘show_photo’ => true, ‘show_quote’ => true, ‘show_link’ => true, ‘show_conversation’ => true, ‘show_audio’=>true, ‘show_video’=>true, ‘inline_styles’=>false, ‘show_time’=>false, ‘number’=>10, ‘video_width’=>false, ‘link_title’=>false, ‘hide_errors’=>false );
$instance = wp_parse_args( (array) $instance, $defaults ); ?><?php // form html ?>
<p>
<label for=”<?php echo $this->get_field_id( ‘title’ ); ?>”>Title:</label>
<input id=”<?php echo $this->get_field_id( ‘title’ ); ?>” name=”<?php echo $this->get_field_name( ‘title’ ); ?>” value=”<?php echo $instance[‘title’]; ?>” style=”width:100%;” />
</p><p>
<label for=”<?php echo $this->get_field_id( ‘tumblr’ ); ?>”>Your Tumblr:</label>
<input id=”<?php echo $this->get_field_id( ‘tumblr’ ); ?>” name=”<?php echo $this->get_field_name( ‘tumblr’ ); ?>” value=”<?php echo $instance[‘tumblr’]; ?>” style=”width:100%;” />
</p><p>
<label for=”<?php echo $this->get_field_id( ‘number’ ); ?>”>Maximum number of posts to display:</label><select id=”<?php echo $this->get_field_id( ‘number’ ); ?>” name=”<?php echo $this->get_field_name( ‘number’ ); ?>” value=”<?php echo $instance[‘number’]; ?>”>
<option value=”1″ <?php if ($instance[‘number’]==1) echo ‘selected=”selected”‘; ?>>1</option>
<option value=”2″ <?php if ($instance[‘number’]==2) echo ‘selected=”selected”‘; ?>>2</option>
<option value=”3″ <?php if ($instance[‘number’]==3) echo ‘selected=”selected”‘; ?>>3</option>
<option value=”5″ <?php if ($instance[‘number’]==5) echo ‘selected=”selected”‘; ?>>5</option>
<option value=”10″ <?php if ($instance[‘number’]==10) echo ‘selected=”selected”‘; ?>>10</option>
<option value=”15″ <?php if ($instance[‘number’]==15) echo ‘selected=”selected”‘; ?>>15</option>
<option value=”20″ <?php if ($instance[‘number’]==20) echo ‘selected=”selected”‘; ?>>20</option>
<option value=”25″ <?php if ($instance[‘number’]==25) echo ‘selected=”selected”‘; ?>>25</option>
</select>
</p><p>
<input class=”checkbox” type=”checkbox” id=”<?php echo $this->get_field_id( ‘link_title’ ); ?>” name=”<?php echo $this->get_field_name( ‘link_title’ ); ?>” <?php if ($instance[‘link_title’]) echo ‘checked’; ?> />
<label for=”<?php echo $this->get_field_id( ‘link_title’ ); ?>”>Link title to Tumblr</label>
</p><p>
<input class=”checkbox” type=”checkbox” id=”<?php echo $this->get_field_id( ‘show_time’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_time’ ); ?>” <?php if ($instance[‘show_time’]) echo ‘checked’; ?> />
<label for=”<?php echo $this->get_field_id( ‘show_time’ ); ?>”>Link to each post on Tumblr</label>
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘inline_styles’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘inline_styles’ ); ?>” name=”<?php echo $this->get_field_name( ‘inline_styles’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘inline_styles’ ); ?>”>Add inline CSS padding</label>
</p><p>
<label for=”<?php echo $this->get_field_id( ‘video_width’ ); ?>”>Set video width:</label>
<input id=”<?php echo $this->get_field_id( ‘video_width’ ); ?>” name=”<?php echo $this->get_field_name( ‘video_width’ ); ?>” value=”<?php echo $instance[‘video_width’]; ?>” maxlength=’4′ style=”width:30px” /> pxLeave blank to show videos at original size.
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘hide_errors’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘hide_errors’ ); ?>” name=”<?php echo $this->get_field_name( ‘hide_errors’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘hide_errors’ ); ?>”>Hide error messages</label>If checked, the widget fails silently when it can’t load Tumblr content.
</p><hr />
<p>Show:</p>
<p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_regular’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_regular’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_regular’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_regular’ ); ?>”>Regular posts</label>
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_photo’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_photo’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_photo’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_photo’ ); ?>”>Photo posts</label>
</p><p>
<label for=”<?php echo $this->get_field_id( ‘photo_size’ ); ?>”>Photo size:</label>
<select id=”<?php echo $this->get_field_id( ‘photo_size’ ); ?>” name=”<?php echo $this->get_field_name( ‘photo_size’ ); ?>” value=”<?php echo $instance[‘photo_size’]; ?>”><option value=”75″ <?php if ($instance[‘photo_size’]==75) echo ‘selected=”selected”‘; ?>>75px</option><option value=”100″ <?php if ($instance[‘photo_size’]==100) echo ‘selected=”selected”‘; ?>>100px</option><option value=”250″ <?php if ($instance[‘photo_size’]==250) echo ‘selected=”selected”‘; ?>>250px</option><option value=”400″ <?php if ($instance[‘photo_size’]==400) echo ‘selected=”selected”‘; ?>>400px</option><option value=”500″ <?php if ($instance[‘photo_size’]==500) echo ‘selected=”selected”‘; ?>>500px</option></select>
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_quote’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_quote’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_quote’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_quote’ ); ?>”>Quotation posts</label>
</p>
<p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_link’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_link’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_link’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_link’ ); ?>”>Link posts</label>
</p>
<p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_conversation’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_conversation’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_conversation’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_conversation’ ); ?>”>Conversation posts</label>
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_audio’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_audio’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_audio’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_audio’ ); ?>”>Audio posts</label>
</p><p>
<input class=”checkbox” type=”checkbox” <?php if ($instance[‘show_video’]) echo ‘checked’; ?> id=”<?php echo $this->get_field_id( ‘show_video’ ); ?>” name=”<?php echo $this->get_field_name( ‘show_video’ ); ?>” />
<label for=”<?php echo $this->get_field_id( ‘show_video’ ); ?>”>Video posts</label>
</p><?php
}
}
?>
- The topic ‘Added Tumblr Widget…’ is closed to new replies.