Bộ lọc bài đăng WordPress theo phạm vi ngày

Lọc bài đăng theo phạm vi ngày, lọc sản phẩm theo phạm vi ngày trong trang web của bạn

  1. Bạn có phải là quản trị viên của trang web blog của bạn?
  2. Bạn có phải là Quản trị viên của trang web thương mại điện tử của mình không? . Sau đó, xin chào Quản trị viên, mong muốn của bạn được plugin tiện ích này phục vụ rất thông minh. Chỉ cần kích hoạt và đặt tiện ích này vào khu vực trang web mong muốn của bạn và để người xem trang web tìm kiếm bằng cách nhập phạm vi ngày từ và đến. Của bạn đây… Vui vẻ lọc 🙂

URL Video Trình diễn.
https. //www. youtube. com/watch?v=Zyjx-aeFSL4

Bạn có thể sử dụng date_query

function get_custom_booking( $query ) {
    if ( $query->is_main_query() && is_post_type_archive( 'booking' ) ) {
        $query->set('date_query', array(
            array(
                'after'     => 'December 1st, 2021',
                'before'    => 'January 31st, 2022',
                'inclusive' => true
            ),
        ));
    }
}
add_action('pre_get_posts', 'get_custom_booking');

Bạn cũng có thể sử dụng wp_query để nhận các bài đăng trong phạm vi ngày

$args = array(
    'date_query' => array(
        array(
            'after'     => 'December 1st, 2021',
            'before'    => 'January 31st, 2022',
            'inclusive' => true,
        ),
    ),
);
$query = new WP_Query( $args );

Cảm ơn vì đã tạo ra một plugin tuyệt vời. Cho đến nay, điều này đang hoạt động tốt với chúng tôi, tôi có một câu hỏi về việc lọc nội dung

Tôi muốn biết liệu có thể chỉ hiển thị kết quả trong 3-4 năm qua hay không. Trong trường hợp của chúng tôi, chúng tôi có nội dung từ năm 2011 nhưng lý tưởng nhất là chỉ muốn hiển thị các bài đăng từ năm 2015 trở đi. Tôi thấy có một tùy chọn để thay đổi thứ tự, nhưng có cách nào để hạn chế hơn nữa các bài đăng cũ hơn không được đưa vào truy vấn hoàn toàn không?

lý do đầu tiên là. mỗi plugin có khả năng làm chậm trang web của bạn. Nó có thể xảy ra do chức năng không cần thiết hoặc có thể do chức năng rất chậm

Lý do thứ hai. mỗi plugin có khả năng có thể có một lỗ hổng. Rất dễ tập trung vào bảo mật khi bạn tạo một đoạn mã nhỏ nhưng sẽ khó hơn nhiều khi bạn viết một plugin có chức năng lớn

Ok, nói ít hơn, hành động nhiều hơn, đó là kết quả

Bộ lọc bài đăng WordPress theo phạm vi ngày

Tôi đã quyết định sử dụng công cụ hẹn giờ giao diện người dùng jQuery vì 1) WooCoomerce sử dụng nó 2) Giao diện người dùng jQuery đã được bao gồm trong quản trị viên WordPress

Và đây là mã cho tệp functions.php của bạn

class mishaDateRange{

	function __construct(){
	
		// if you do not want to remove default "by month filter", remove/comment this line
		add_filter( 'months_dropdown_results', '__return_empty_array' );
		
		// include CSS/JS, in our case jQuery UI datepicker
		add_action( 'admin_enqueue_scripts', array( $this, 'jqueryui' ) );
		
		// HTML of the filter
		add_action( 'restrict_manage_posts', array( $this, 'form' ) );
		
		// the function that filters posts
		add_action( 'pre_get_posts', array( $this, 'filterquery' ) );
		
	}

	/*
	 * Add jQuery UI CSS and the datepicker script
	 * Everything else should be already included in /wp-admin/ like jquery, jquery-ui-core etc
	 * If you use WooCommerce, you can skip this function completely
	 */
	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' );
	}

	/*
	 * Two input fields with CSS/JS
	 * If you would like to move CSS and JavaScript to the external file - welcome.
	 */
	function form(){
		
		$from = ( isset( $_GET['mishaDateFrom'] ) && $_GET['mishaDateFrom'] ) ? $_GET['mishaDateFrom'] : '';
		$to = ( isset( $_GET['mishaDateTo'] ) && $_GET['mishaDateTo'] ) ? $_GET['mishaDateTo'] : '';
		
		echo '<style>
		input[name="mishaDateFrom"], input[name="mishaDateTo"]{
			line-height: 28px;
			height: 28px;
			margin: 0;
			width:125px;
		}
		</style>
		
		<input type="text" name="mishaDateFrom" placeholder="Date From" value="' . esc_attr( $from ) . '" />
		<input type="text" name="mishaDateTo" placeholder="Date To" value="' . esc_attr( $to ) . '" />
	
		<script>
		jQuery( function($) {
			var from = $(\'input[name="mishaDateFrom"]\'),
			    to = $(\'input[name="mishaDateTo"]\');

			$( \'input[name="mishaDateFrom"], input[name="mishaDateTo"]\' ).datepicker( {dateFormat : "yy-mm-dd"} );
			// by default, the dates look like this "April 3, 2017"
    			// I decided to make it 2017-04-03 with this parameter datepicker({dateFormat : "yy-mm-dd"});
    
    
    			// the rest part of the script prevents from choosing incorrect date interval
    			from.on( \'change\', function() {
				to.datepicker( \'option\', \'minDate\', from.val() );
			});
				
			to.on( \'change\', function() {
				from.datepicker( \'option\', \'maxDate\', to.val() );
			});
			
		});
		</script>';
		
	}
	
	/*
	 * The main function that actually filters the posts
	 */
	function filterquery( $admin_query ){
		global $pagenow;
		
		if (
			is_admin()
			&& $admin_query->is_main_query()
			// by default filter will be added to all post types, you can operate with $_GET['post_type'] to restrict it for some types
			&& in_array( $pagenow, array( 'edit.php', 'upload.php' ) )
			&& ( ! empty( $_GET['mishaDateFrom'] ) || ! empty( $_GET['mishaDateTo'] ) )
		) {

			$admin_query->set(
				'date_query', // I love date_query appeared in WordPress 3.7!
				array(
					'after' => sanitize_text_field( $_GET['mishaDateFrom'] ), // any strtotime()-acceptable format!
					'before' => sanitize_text_field( $_GET['mishaDateTo'] ),
					'inclusive' => true, // include the selected days as well
					'column'    => 'post_date' // 'post_modified', 'post_date_gmt', 'post_modified_gmt'
				)
			);
			
		}
		
		return $admin_query;
	
	}

}
new mishaDateRange();

Thêm một ảnh chụp màn hình từ trang Thư viện phương tiện

Bộ lọc bài đăng WordPress theo phạm vi ngày

Trên dòng 84 của mã, bạn có thể thấy rằng bộ lọc phạm vi cũng được phép tải lên (chỉ dành cho chế độ xem Danh sách)

Có một câu hỏi?

# WordPress, wp-admin

Bộ lọc bài đăng WordPress theo phạm vi ngày

Misha Rudrastyh

Chào các bạn và chào mừng đến với trang web của tôi. Trong hơn 10 năm, tôi đã cố gắng hết sức để chia sẻ miễn phí với bạn một số hướng dẫn và mẹo tuyệt vời về WordPress