wordpress后台文章日期筛选

    wordpress后台文章日期筛选

    首先这就是我们要实现的效果,在后台文章列表,使用wordpress自带的datepicker插件实现筛选功能,对于个人博客来说,这个教程的意义不大,因为文章不多。对于文章量比较大的站点,这个功能可是相当的nice,下面贴代码

    首先我们注释掉wordpress自带的日期筛选

    add_filter( 'months_dropdown_results', '__return_empty_array' );

    添加筛选功能,在functions.php中加入一下代码

    //the function that filters posts
    function filterquery( $admin_query ){
    	global $pagenow;
    	if (
    		is_admin()
    		&& $admin_query->is_main_query()
    		// 默认情况下,过滤器将添加到所有文章类型,您可以使用 $_GET['post_type'] 对某些类型进行限制
    		&& in_array( $pagenow, array( 'edit.php', 'upload.php' ) )
    		&& ( ! empty( $_GET['mishaDateFrom'] ) || ! empty( $_GET['mishaDateTo'] ) )
    	) {
    		$admin_query->set(
    			'date_query', 
    			array(
    				'ater' => $_GET['mishaDateFrom'], // 任何SttoTimes()可接受的格式!
    				'before' => $_GET['mishaDateTo'],
    				'inclusive' => true, // 也包括选择的日子
    				'column'    => 'post_date' // 'post_modified', 'post_date_gmt', 'post_modified_gmt'
    			)
    		);
     
    	}
    	return $admin_query;
    }
    add_action( 'pre_get_posts', 'filterquery' );

    接着在文章页面显示筛选框,继续添加

    //HTML of the filter
    function form(){
    	$from = ( isset( $_GET['zbDateFrom'] ) && $_GET['zbDateFrom'] ) ? $_GET['zbDateFrom'] : '';
    	$to = ( isset( $_GET['zbDateTo'] ) && $_GET['zbDateTo'] ) ? $_GET['zbDateTo'] : '';
    	echo '<style>input[name="zbDateFrom"], input[name="zbDateTo"]{
    			line-height: 28px;
    			height: 28px;
    			margin: 0;
    			width:125px;}</style>
     
    		<input type="text" name="zbDateFrom" placeholder="开始日期" value="' . $from . '" />
    		<input type="text" name="zbDateTo" placeholder="结束日期" value="' . $to . '" />
    		<script>
    		jQuery( function($) {
    			var from = $(\'input[name="zbDateFrom"]\'),
    			    to = $(\'input[name="zbDateTo"]\');
     
    			$( \'input[name="zbDateFrom"], input[name="zbDateTo"]\' ).datepicker();
        			from.on( \'change\', function() {
    				to.datepicker( \'option\', \'minDate\', from.val() );
    			});
     
    			to.on( \'change\', function() {
    				from.datepicker( \'option\', \'maxDate\', to.val() );
    			});
     
    		});
    		</script>';
    }
    add_action( 'restrict_manage_posts', 'form');

     

    最后就是载入jquery-ui与jquery-ui-datepicker,我这里为了方便直接引用jquery-ui的CND,如果觉得影响载入速度,可自行替换

    //include CSS/JS, in our case jQuery UI datepicker
    function jqueryui(){
    	wp_enqueue_style( 'jquery-ui', '//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css' );
    	wp_enqueue_script( 'jquery-ui-datepicker' );
    }
    add_action( 'admin_enqueue_scripts', 'jqueryui' );

    做完这些,刷新你的文章列表,效果就已经出来了。

    教程结束,有疑问可以给我留言。

    Responses

    您的电子邮箱地址不会被公开。 必填项已用*标注

    Up Next:

    Wordpress文章密码保护Ajax

    Wordpress文章密码保护Ajax