it-swarm-vi.tech

Phần mềm và phần mềm trong phần mềm và phần mềm trong phần mềm?

Đoạn mã sau là từ tiện ích thanh bên liệt kê "các bài đăng gần đây". Vì nó trên trang chủ và tôi có bài đăng dính cuối cùng của tôi nổi bật trên trang đó, tôi muốn bỏ qua phần dính trong vòng lặp này. Tuy nhiên, post_not_in=sticky_posts không có hiệu lực.

<?php
    $the_query = new WP_Query("showposts=$number&offset=1&order=ASC&post_not_in=sticky_posts");

    while ($the_query->have_posts()) : $the_query->the_post();
        $do_not_duplicate = $post->ID; ?>
1
Scott B

Tôi đã lấy @ tnorthcutt's từ Codex của WordPress trên query_posts() về Tham số dính và tạo một ví dụ song song, bạn có thể thả test.php vào thư mục gốc của trang web và xem nó chạy bằng cách điều hướng đến một URL như thế này, với tên miền của bạn được thay thế:

http://example.com/test.php

Một số lưu ý về mã; Tôi đã phải sử dụng một mảng tương đương với chuỗi truy vấn mà bạn đã chuyển cho WP_Query() vì đối số post__no_in không thể được chuyển qua dưới dạng chuỗi được phân cách bằng dấu phẩy (không chắc tại sao, có thể là giám sát ?).

Ngoài ra tôi muốn đảm bảo rằng bạn biết rằng bắt đầu bằng offset=1 (thay vì offset=0) có nghĩa là bạn sẽ loại trừ bài đăng đầu tiên nếu không sẽ bị truy vấn trả về. Tất nhiên, bạn vẫn sẽ nhận được số lượng bài đăng được chỉ định bởi $number giả sử bạn có nhiều bài đăng có thể áp dụng +1. Vì vậy, đây là mã:

<?php
header('Content-Type:text/plain');
include "wp-load.php";

$number = 5;

$the_query = new WP_Query(array(
  'showposts' => $number,
  'offset' => 1,  // This will cause the query to skip over first post
  'order' => 'ASC',
  'post__not_in' => get_option("sticky_posts"),
  ));
while ($the_query->have_posts()) : $the_query->the_post();
  the_title(); 
endwhile;
3
MikeSchinkel

Nếu bạn muốn loại trừ tất cả các bài viết dính khỏi truy vấn, hãy sử dụng

query_posts(array("post__not_in" =>get_option("sticky_posts")));

(từ bộ mã )

Có vẻ như điều đó sẽ chỉ hoạt động trên 3.0 hoặc cao hơn, mặc dù: http://wordpress.org/support/topic/excluding-sticky-posts-USE-query_posts

Chỉnh sửa: để phản hồi bình luận của bạn bên dưới, hãy thử điều này (Tôi không chắc điều này sẽ hoạt động, nhưng hy vọng nó sẽ giúp bạn bắt đầu):

<?php 
$args=array(
    'showposts'=>'$number',
    'offset'=>'1',
    'order'=>'ASC',
    'post__not_in'=>get_option("sticky_posts")
    );
$the_query = new WP_Query($args);

    while ($the_query->have_posts()) : $the_query->the_post();

        $do_not_duplicate = $post->ID; ?>
1
Travis Northcutt