Created
January 5, 2012 18:13
-
-
Save benbalter/1566449 to your computer and use it in GitHub Desktop.
Recently Answered Questions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Help - Recently Answered Questions | |
Description: Widget to display recently answers questions on help.hackshackers.com | |
Author: Benjamin J. Balter | |
Version: 1.0 | |
Author URI: http://ben.balter.com | |
*/ | |
class Recent_Answers_Widget extends WP_Widget { | |
//default settings | |
private $defaults = array( | |
'number' => 5, | |
'title' => 'Recent Answers', | |
); | |
/** | |
* Init widget and register | |
*/ | |
function __construct() { | |
parent::WP_Widget( 'Recent_Answers_Widget', $name = 'Questions: Recently Answered' ); | |
add_action( 'widgets_init', create_function( '', 'return register_widget("Recent_Answers_Widget");' ) ); | |
} | |
/** | |
* Callback to display widget contents | |
*/ | |
function widget( $args, $instance ) { | |
extract( $args ); | |
$args = array( | |
'number' => $instance['number'], | |
'post_type' => 'answer', | |
); | |
$answers = get_posts( $args ); | |
echo $before_widget; | |
echo $before_title . apply_filters( 'widget_title', $instance['title'] ) . $after_title; | |
echo "<ol>"; | |
foreach ( $answers as $answer ) { | |
$parent = get_post( $answer->post_parent ); | |
$user = get_userdata( $answer->post_author ); | |
echo '<li><a href="'. site_url( 'questions/user/' . $user->user_nicename . '/' ) . '" title="View ' . $user->display_name . '\'s profile">' . $user->display_name . '</a> on <a href="'. get_permalink( $answer->ID ) . '" title="View ' . get_the_title( $parent->ID ) . '">' . get_the_title( $parent->ID ) . "</a></li>"; | |
} | |
echo "</ol>"; | |
echo $after_widget; | |
} | |
/** | |
* Callback to display widget options form | |
*/ | |
function form( $instance ) { | |
foreach ( $this->defaults as $key => $value ) | |
if ( !isset( $instance[ $key ] ) ) | |
$instance[ $key ] = $value; | |
?> | |
<p> | |
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> | |
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $instance['title']; ?>" /> | |
</p> | |
<p> | |
<label for="<?php echo $this->get_field_id('number'); ?>">Number of Users</label><br /> | |
<input class="small-text" id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $instance['number']; ?>" /> | |
</p> | |
<?php | |
} | |
/** | |
* Sanitizes options and saves | |
*/ | |
function update( $new_instance, $old_instance ) { | |
$instance = $old_instance; | |
$instance['title'] = strip_tags( $new_instance['title'] ); | |
$instance['number'] = (int) $new_instance['number']; | |
return $instance; | |
} | |
} | |
new Recent_Answers_Widget; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment