Wordpress Dev

Tùy chỉnh Sticky Post trong WordPress

Trong WordPress có một chức năng mặc định được xây dựng từ phiên bản 2.7 trở đi, được kích hoạt khi bạn …

Trong WordPress có một chức năng mặc định được xây dựng từ phiên bản 2.7 trở đi, được kích hoạt khi bạn bấm vào >> Thêm bài viết >> Chế độ. Và đúng như cái tên của nó, sticky post là chức năng dán bài viết lên đầu danh sách và cho dù nó có cũ thì cũng không bị đẩy xuống, dùng để làm bài viết tiêu biểu hoặc thông báo, hoặc định hướng người đọc cũng đều okey hết !

Như lần trước tôi có thiết kế một website tin tức cho bạn tôi, tôi dùng chức năng sticky post này để dán nhãn cho các hot trends hiển thị, tất nhiên là các query bài viết cần phải thêm “ignore_sticky_posts” vào để không include lại lần nữa các bài viết này.

Các sticky post được lưu thành chuỗi và được gọi ra bởi hàm get_option(‘sticky’), như vậy, nếu bạn muốn lấy toàn bộ nó ra thì chỉ cần gọi hàm đó là ta có danh sách, sau đây là vài đoạn ứng dụng vui vui nếu các bạn có thể sử dụng được thì hay:

Hiển thị các bài viết được sticky:

$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( 'p=' . $sticky[0] );

Hoặc hiển thị các bài đăng được dán nhưng nếu không có thì hiển thị các bài viết khác:

$args = array(
	'posts_per_page' => 1,
	'post__in'  => get_option( 'sticky_posts' ),
	'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );

Không hiển thị các bài được sticky trước đó:

$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );

Hoặc không hiển thị sticky post trong một category, có thêm phân trang:

$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$sticky = get_option( 'sticky_posts' );
$args = array(
	'cat' => 3,
	'ignore_sticky_posts' => 1,
	'post__not_in' => $sticky,
	'paged' => $paged
);
$query = new WP_Query( $args );

Hoặc đoạn code sau sẽ hiển thị 5 bài được sticky mới nhất:

<?php
/* Get all Sticky Posts */
$sticky = get_option( 'sticky_posts' );

/* Sort Sticky Posts, newest at the top */
rsort( $sticky );

/* Get top 5 Sticky Posts */
$sticky = array_slice( $sticky, 0, 5 );

/* Query Sticky Posts */
$query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) );
?>

Chúc các bạn thành công !

Thông tin liên quan