2015-02-20 33 views
5

Chào buổi sáng, tôi đã tìm thấy nhiều câu hỏi tương tự, nhưng không có câu trả lời nào phù hợp với vấn đề của tôi. Điểm rất đơn giản: Tôi có một vòng lặp tùy chỉnh với get_posts() và tôi muốn loại trừ bài đăng hiện tại khỏi hiển thị.Loại trừ các bài đăng khỏi get_posts()

Mã này là:

$args = array(
      'posts_per_page' => 3, 
      'orderby'   => 'meta_value', 
      'order'    => 'ASC', 
      'post_type'   => 'fasthomepress_pt', 
      'post__not_in'  => array(get_the_id()), 
      'meta_query'  => array(
            array(
             'key' => 'custom_richiesta', 
             'value' => array($custom_boxes['custom_richiesta'][0] - 10000, $custom_boxes['custom_richiesta'][0] + 10000), 
             'type' => 'numeric', 
             'compare' => 'BETWEEN' 
            ) 
          ) 
    ); 

Tôi đã thử với:

'post__not_in' => array(get_the_ID), 
'post__not_in' => array($post->ID), 
'exclude'  => $post->ID, 
'exclude'  => get_the_ID, 

và với nhiều kết hợp khác có hoặc không có mảng. Của lời nguyền, id bài hiện tại được lặp lại chính xác trước vòng lặp này, và nếu tôi thử echo ($ post-> ID) và echo (get_the_ID()) tôi có cùng, chính xác, kết quả.

Tôi thực sự không biết những gì đang xảy ra, cảm ơn bạn rất nhiều vì sự giúp đỡ,

Marco

+0

Hãy thử xóa meta_query của bạn ngay bây giờ để kiểm tra và kiểm tra xem nó có exculdes bài đăng hiện tại hay không. Cú pháp là chính xác, nó có thể là vấn đề với truy vấn meta tôi nghĩ vậy. – user46487

+0

Tôi đã giải quyết nó ngay bây giờ, đó là lỗi của tôi !! Tôi đã thử này get_posts() vòng lặp bên trong vòng lặp khác, và tôi đã không đặt nó tốt. Tôi đã chuyển vòng lặp này ra ngoài vòng lặp chính và mọi thứ hoạt động tốt, cảm ơn sự hỗ trợ của bạn! – Marco

Trả lời

6

đây là một chức năng nào đó:

function get_lastest_post_of_category($cat){ 
    $args = array('posts_per_page' => 1, 'order'=> 'DESC', 'orderby' => 'date', 'category__in' => (array)$cat); 
    $post_is = get_posts($args); 
    return $post_is[0]->ID; 
} 

Cách sử dụng: nói loại id của tôi là 22 thì:

$last_post_ID = get_lastest_post_of_category(22); 

bạn cũng có thể vượt qua một loạt các mục để chức năng này.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    $args = array(
    'posts_per_page' => 18, 
    'paged'   => $paged, 
    'offset'   => 0, 
    'post__not_in'  => array($last_post_ID,), 
    'category'   => '', 
    'category_name' => '', 
    'orderby'   => 'post_date', 
    'order'   => 'DESC', 
    'include'   => '', 
    'exclude'   => '', 
    'meta_key'   => '', 
    'meta_value'  => '', 
    'post_type'  => 'post', 
    'post_mime_type' => '', 
    'post_parent'  => '', 
    'post_status'  => 'publish', 
    'suppress_filters' => true 
); 
// The Query 
$the_query = new WP_Query($args); 
+1

Cảm ơn bạn đã chia sẻ điều này! Tôi sẽ thử nó sớm! – Marco

12

thử exculde này đang làm việc cho tôi.

$args = array(
     'posts_per_page' => 3, 
     'orderby'   => 'meta_value', 
     'order'    => 'ASC', 
     'post_type'   => 'fasthomepress_pt', 
     'exclude'  => array(get_the_id()), 
     'meta_query'  => array(
           array(
            'key' => 'custom_richiesta', 
            'value' => array($custom_boxes['custom_richiesta'][0] - 10000, $custom_boxes['custom_richiesta'][0] + 10000), 
            'type' => 'numeric', 
            'compare' => 'BETWEEN' 
           ) 
         ) 
); 

tôi hy vọng điều này phù hợp với bạn.

+0

Cảm ơn bạn đã trả lời. Thật không may, nó không hoạt động, tôi đã thử với các giá trị loại trừ ---> mảng() và loại trừ ---->, kết quả luôn giống nhau. – Marco

+0

GIẢI PHÁP! Đó là sai lầm của tôi. Tôi đã thử này get_posts() vòng lặp bên trong vòng lặp khác, và tôi đã không đặt nó tốt. Tôi đã chuyển vòng lặp này ra ngoài vòng lặp chính và mọi thứ hoạt động tốt, cảm ơn sự hỗ trợ của bạn! – Marco

Các vấn đề liên quan