tại sao ign_sticky_posts trong truy vấn bài dính


9

Chúng ta đều biết rằng ign_sticky_posts được sử dụng để loại trừ bài đăng dính khỏi truy vấn tùy chỉnh của bạn.

Nhưng tại sao trên trang codex https://codex.wordpress.org/Sticky_Posts , họ sử dụng ign_sticky_posts trong truy vấn bài viết dính ??

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

Điều này rất khó hiểu và không có ý nghĩa gì, bạn muốn nó và bạn loại trừ nó?

Câu trả lời:


18

Chúng tôi đều biết rằng ignore_sticky_postsđược sử dụng để loại trừ bài đăng dính khỏi truy vấn tùy chỉnh của bạn.

- Không, giả định này là sai.


ignore_sticky_postsnghĩa là gì

Mặc dù trong tiếng Anh tự nhiên, ignore_sticky_postsâm thanh như WordPress nên bỏ qua tất cả các bài đăng dính từ truy vấn, nhưng thực tế đó không phải là những gì WordPress làm. Thay vào đó, bạn nên đọc 'ignore_sticky_posts' => 1đối số như sau:

Khi ignore_sticky_postsđược đặt thành truehoặc 1, WordPress sẽ bỏ qua quy trình đặt các bài đăng dính trong truy vấn tùy chỉnh của bạn.


WordPress làm gì khi ignore_sticky_postskhông được đặt:

Để hiểu rõ điều gì 'ignore_sticky_posts' => 1, bạn cần hiểu WordPress làm gì khi ignore_sticky_postsđối số không được đặt hoặc nó được đặt thành falsehoặc 0(theo mặc định):

  1. Nếu có các bài đăng trong kết quả truy vấn là một phần của bài đăng dính, WordPress sẽ đẩy chúng lên đầu kết quả truy vấn.

  2. Nếu bất kỳ bài đăng dính nào không xuất hiện trong kết quả truy vấn, WordPress sẽ nhận lại tất cả các bài đăng dính đó từ cơ sở dữ liệu và đặt chúng lên đầu kết quả truy vấn.

Vì vậy, khi đối số được đặt là 'ignore_sticky_posts' => 1, WordPress chỉ cần bỏ qua quy trình trên , chỉ vậy thôi. Nó không loại trừ chúng cụ thể. Cho rằng bạn cần phải thiết lập post__not_inđối số.


Giải thích về ví dụ codex:

Bây giờ, hãy đến ví dụ từ codex:

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

Ở đây codex chỉ thiết lập 'ignore_sticky_posts' => 1 để có hiệu quả, không có gì hơn . Ngay cả khi không có nó, bạn sẽ nhận được kết quả như mong đợi:

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

Tuy nhiên, trong trường hợp này, vì 'ignore_sticky_posts' => 1đối số không được đặt, WordPress sẽ không cần thiết phải thực hiện tất cả các quy trình đặt bài đăng dính lên đầu kết quả, mặc dù tất cả các kết quả này (từ ví dụ này) chỉ là bài đăng dính.


Cách tốt nhất để học một cái gì đó trong WordPress là kiểm tra MÃ cốt lõi. Vì vậy, để hiểu rõ hơn, hãy kiểm tra phần này của WordPress CODE .


3
WordPress nên bao gồm câu trả lời của bạn trên trang bài viết dính của họ!
吉 宁

1
Tôi rất vui vì nó đã giúp bạn. WordPress codex có thể chỉnh sửa, thậm chí bạn có thể chỉnh sửa nó và thêm câu trả lời này làm tài liệu tham khảo cho người khác;)
Fayaz

4
Câu trả lời này được đánh giá rất thấp. Tôi thực sự đã trở lại với nó hai lần bây giờ, cách nhau một năm. Đó là cách khó hiểu tham số này.
Benji
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.