Sử dụng get_adjacent_post
, previous_post_link
và next_post_link
chỉ dường như nhận ra các mục có cùng loại bài đăng. Vì tôi có 2 loại bài đăng tùy chỉnh, có cách nào để liên kết giữa tất cả các loại bài đăng trước và sau không?Làm cho get_adjacent_post() hoạt động trên các loại bài đăng tùy chỉnh
8
A
Trả lời
23
Dường như câu hỏi này đã được hỏi trên tất cả các mạng liên kết không có câu trả lời rõ ràng. Vì vậy, tôi đã tạo ra chức năng của riêng mình từ get_adjacent_post
gốc và tùy chỉnh nó cho bất kỳ ai khác cần nó.
Chức năng
Drop này trong functions.php của bạn
/*
* Replacement for get_adjacent_post()
*
* This supports only the custom post types you identify and does not
* look at categories anymore. This allows you to go from one custom post type
* to another which was not possible with the default get_adjacent_post().
* Orig: wp-includes/link-template.php
*
* @param string $direction: Can be either 'prev' or 'next'
* @param multi $post_types: Can be a string or an array of strings
*/
function mod_get_adjacent_post($direction = 'prev', $post_types = 'post') {
global $post, $wpdb;
if(empty($post)) return NULL;
if(!$post_types) return NULL;
if(is_array($post_types)){
$txt = '';
for($i = 0; $i <= count($post_types) - 1; $i++){
$txt .= "'".$post_types[$i]."'";
if($i != count($post_types) - 1) $txt .= ', ';
}
$post_types = $txt;
}
$current_post_date = $post->post_date;
$join = '';
$in_same_cat = FALSE;
$excluded_categories = '';
$adjacent = $direction == 'prev' ? 'previous' : 'next';
$op = $direction == 'prev' ? '<' : '>';
$order = $direction == 'prev' ? 'DESC' : 'ASC';
$join = apply_filters("get_{$adjacent}_post_join", $join, $in_same_cat, $excluded_categories);
$where = apply_filters("get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type IN({$post_types}) AND p.post_status = 'publish'", $current_post_date), $in_same_cat, $excluded_categories);
$sort = apply_filters("get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1");
$query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
$query_key = 'adjacent_post_' . md5($query);
$result = wp_cache_get($query_key, 'counts');
if (false !== $result)
return $result;
$result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
if (null === $result)
$result = '';
wp_cache_set($query_key, $result, 'counts');
return $result;
}
Cách sử dụng
cơ bản sử dụng
// Custom post types can be array() or string
$post1 = mod_get_adjacent_post('prev', array('post', 'custom1', 'custom2'));
$post2 = mod_get_adjacent_post('next', 'custom2');
Để tạo prev/liên kết tiếp theo
<?php
$prev = mod_get_adjacent_post('prev', array('post', 'custom1', 'custom2'));
$next = mod_get_adjacent_post('next', array('post', 'custom1', 'custom2'));
?>
<?php if($prev) : ?>
<a href="<?php echo get_permalink($prev->ID)?>">« Go back in time</a>
<?php endif; ?>
<?php if($next) : ?>
<a href="<?php echo get_permalink($next->ID)?>">Next: <?php echo $next->post_title; ?> »</a>
<?php endif; ?>
Bạn vẫn có thể thay đổi mã nếu bạn vẫn muốn bao gồm các biến $in_same_cat
và $excluded_categories
nhưng nếu bạn làm sau đó tôi đề nghị bạn sử dụng get_adjacent_post
thay vì đó là những gì nó cho.
Các vấn đề liên quan
- 1. Các loại và loại bài đăng tùy chỉnh
- 2. cách hiển thị dữ liệu tùy chỉnh từ các loại bài đăng tùy chỉnh
- 3. Truy vấn SQL cho Loại bài đăng tùy chỉnh và Nhiều trường tùy chỉnh
- 4. Hiển thị cột phân loại tùy chỉnh trong danh sách loại bài đăng tùy chỉnh
- 5. Wordpress - Xóa menu phụ từ loại bài đăng tùy chỉnh
- 6. Loại riêng biệt cho các loại bài đăng
- 7. Lặp lại thông qua loại bài đăng tùy chỉnh theo loại phân loại tùy chỉnh? (Sắp xếp các bài viết wordpress theo thể loại, hoặc hiển thị loại bài tùy chỉnh theo thuật ngữ phân loại)
- 8. Làm cách nào để hiển thị danh sách các loại bài đăng tùy chỉnh của WordPress?
- 9. Cách thiết lập Vai trò Người dùng đơn giản cho Loại Bài đăng Tùy chỉnh Wordpress
- 10. WP_Query - nhiều loại bài đăng tùy chỉnh và sắp xếp theo meta tùy chỉnh
- 11. Wordpress - Ảnh nổi bật Meta Box không hiển thị trên loại bài đăng tùy chỉnh
- 12. Làm thế nào để làm cho java HashMap hoạt động đúng với loại khóa tùy chỉnh?
- 13. Hiển thị bảng điều khiển thẻ trong loại bài đăng tùy chỉnh
- 14. Phân cấp loại bài đăng tùy chỉnh Wordpress và đánh dấu menu (current_page_parent)
- 15. Bài đăng JSON với Trường HTTPHeader tùy chỉnh
- 16. Bài đăng PHP Curl với tệp đính kèm; tiêu đề loại nội dung tùy chỉnh
- 17. Viết lại số lượng lớn bài đăng dựa trên giá trị trường tùy chỉnh trong Wordpress
- 18. Trình chuyển đổi loại tùy chỉnh AutoMapper không hoạt động
- 19. Hoạt ảnh vuốt tùy chỉnh (Nghiêng, Thẻ bài, 3D, v.v.)
- 20. Làm cách nào để xây dựng URL bài đăng trên Facebook từ id bài đăng?
- 21. Tùy chỉnh hashcode/bằng hoạt động cho HashMap
- 22. đăng ký loại tệp tùy chỉnh trong iOS
- 23. Css - Kiểu tùy chỉnh trên hộp kiểm không hoạt động
- 24. setOnItemClickListener() không hoạt động trên ListView tùy chỉnh @ Android
- 25. Có thể xác định các loại tùy chỉnh trong java hoạt động với nguyên thủy không?
- 26. Đăng ký làm ứng dụng mặc định cho loại tệp tùy chỉnh
- 27. Truy vấn SQL để trích xuất tất cả các bài đăng trên WordPress với các loại
- 28. tùy chỉnh UISearchBarIconClear cho UIControlStateHighlighted không hoạt động
- 29. Làm cho vùng chứa tùy chỉnh hoạt động với ** kwargs (cách Python mở rộng các arg?)
- 30. Loại tùy chỉnh làm khóa cho bản đồ - C++
Rất tốt, cảm ơn! Nếu được sử dụng trên bất kỳ loại trang nào, bạn có thể dễ dàng thêm thông số $ thứ ba (hoặc thực tế, đầu tiên) $ để chuyển loại bài đăng trực tiếp vào hàm (đừng quên xóa bài $ toàn cầu sau đó). – JosFabre
cần cập nhật để xử lý biến '$ post_type' chuỗi: nếu (is_array ($ post_types)) { $ txt = ''; cho ($ i = 0; $ i <= số ($ post_types) - 1; $ i ++) { $ txt. = "'". $ Post_types [$ i]. "'"; nếu ($ i! = Đếm ($ post_types) - 1) $ txt. = ','; } $ post_types = $ txt; } else { \t $ post_types = "'" .trim ($ post_types, "'"). "'"; } – emc
cách chúng tôi có thể sửa đổi mã để hoạt động cho các bài đăng trong cùng một danh mục? – CyberJunkie