在我们的wordpress边栏想显示我们发布的最新文章,并且带上缩略图,很多插件能帮我们完成这个功能,其实我们完全可以自己DIY,和wordpress原生态的小工具一样,直接拖过去就OK了,这里把流程和代码分享一下,有需要的朋友可以自己二次开发。本站的左边兰的最新文章就是采用了这个方法。
开始之前你需要了解 widget 函数如何创建自定义侧边栏小工具,本站有篇文章详细介绍了用法和实例,wordpress主题开发创建你喜欢的小工具
流程:
二、在functions.PHP文件中导入recent-posts.PHP,这样做的目的是不让functions.PHP太臃肿,独立出来好管理。
三、根据你的主题样式,在style.css定义你的前端显示样式,为了你方便修改样式表,我这里加了类。
recent-posts.PHP源码
点击查看recent-posts.PHP源码
/**
*
* web:www.511yj.com
*/
class yj_Recent_Posts extends WP_Widget {
public function __construct() {
parent::__construct(
'yj_rp',// Base ID
__('最新文章','yj'),// Name
array( 'description' => __( '显示你发布的最新文章并且带有缩略图.','yj' ),) // Args
);
}
public function widget( $args,$instance ) {
if (isset($instance['title'])) :
$title = apply_filters( 'widget_title',$instance['title'] );
$no_of_posts = apply_filters( 'no_of_posts',$instance['no_of_posts'] );
else :
$title = __('Latest Posts','yj');
$no_of_posts = 5;
endif;
echo $args['before_widget'];
if ( ! empty( $title ) )
echo $args['before_title'] . $title . $args['after_title'];
// WP_Query arguments
$qa = array (
'post_type' => 'post',
'posts_per_page' => $no_of_posts,
'offset' => 0,
'ignore_sticky_posts' => 1
);
// The Query
$recent_articles = new WP_Query( $qa );
if($recent_articles->have_posts()) : ?>
PHP if( has_post_thumbnail() ) : ?>
PHP the_permalink(); ?>">PHP the_post_thumbnail('thumbnail'); ?>else :
?>
PHP the_permalink(); ?>">PHP echo get_stylesheet_directory_uri(); ?>/images/nthumb.png">endif; ?>
PHP the_permalink(); ?>">PHP the_title(); ?>PHP the_time('Y-m-j'); ?>endwhile;
else:
?>
Oops,there are no posts.
endif;
?>
echo $args['after_widget'];
}
public function form( $instance ) {
if ( isset( $instance[ 'title' ] ) ) {
$title = $instance[ 'title' ];
}
else {
$title = __( '最新文章','yj' );
}
if ( isset( $instance[ 'no_of_posts' ] ) ) {
$no_of_posts = $instance[ 'no_of_posts' ];
}
else {
$no_of_posts = __( '5','yj' );
}
?>
PHP echo $this->get_field_id( 'title' ); ?>" name="PHP echo $this->get_field_name( 'title' ); ?>" type="text" value="PHP echo esc_attr( $title ); ?>" />
PHP echo $this->get_field_id( 'no_of_posts' ); ?>" name="PHP echo $this->get_field_name( 'no_of_posts' ); ?>" type="text" value="PHP echo esc_attr( $no_of_posts ); ?>" />
}
public function update( $new_instance,$old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
$instance['no_of_posts'] = ( ! empty( $new_instance['no_of_posts'] ) ) ? strip_tags( $new_instance['no_of_posts'] ) : '5';
if ( is_numeric($new_instance['no_of_posts']) == false ) {
$instance['no_of_posts'] = $old_instance['no_of_posts'];
}
return $instance;
}
}
add_action( 'widgets_init','register_yj_widget' );
function register_yj_widget() {
register_widget( 'yj_Recent_Posts' );
}
在functions.PHP文件中导入recent-posts.PHP,
require get_template_directory() . '/recent-posts.PHP';
重要说明:
1、上面的代码中我们给div 加了class='rp-thumb'所以想定义样式可以在你的样式表里style.css这样就可以了,比如我们把缩略图定义为60*60
.rp-thumb img{
width:60px;
height::60px;
}
2、静态结构说明
缩略图PHP the_permalink(); ?>">PHP echo get_stylesheet_directory_uri(); ?>/images/nthumb.png">猜你在找的wordpress相关文章
while($recent_articles->have_posts()) :
$recent_articles->the_post();
?>