2009-06-16 36 views
7

Trên bản cài đặt WordPress 2.8 mới, tôi có một số bài đăng được gán cho danh mục Foo trước đó đã được công khai nhưng từ đó đã được đặt ở chế độ riêng tư. Khi tôi đăng nhập vào WordPress (với tư cách là quản trị viên) và cũng đang duyệt trang danh mục Foo trong một tab khác trong cùng một trình duyệt, tôi có thể xem các bài đăng riêng tư trên trang danh mục, với tiêu đề nhập được bắt đầu bằng từ " RIÊNG TƯ: ".WordPress hiển thị các bài đăng riêng tư cho người dùng đã đăng nhập - cách tắt chức năng này?

Hiện tại, không có gì "bị hỏng" về vấn đề này - các bài đăng được ẩn chính xác khỏi người dùng không đăng nhập. Nhưng tôi không muốn người dùng đã đăng nhập xem các bài đăng riêng tư trên trang web trực tiếp, bởi vì thẳng thắn nó chỉ gây phiền nhiễu, không hữu ích.

Tôi nên làm gì với Vòng lặp WP trên trang lưu trữ danh mục hoặc tệp chức năng để tắt khả năng không mong muốn này để xem các bài đăng riêng tư trên trang web?

+0

Các quản trị viên không nhìn thấy chúng? – jitter

+0

Có phải vì người dùng Quản trị viên của bạn có nhiều quyền hơn đối với người dùng thông thường không? Bạn đã thử tạo một người dùng "Người đăng ký" chuẩn và thấy liệu bạn có gặp vấn đề tương tự không? – Amadiere

+0

Chỉ có hai người dùng trên hệ thống, cả hai quản trị viên. Tôi không muốn xem các bài đăng riêng tư trên blog này (trên giao diện người dùng), nghĩa là - bạn biết, đang duyệt trang web như người dùng) khi đăng nhập. Vì vậy, việc tạo người dùng "người đăng ký" sẽ không giúp được vấn đề này - tôi vẫn cần phải đăng nhập với tư cách quản trị viên để thực hiện việc bảo trì trang web phụ trợ và như vậy. – Asparagirl

Trả lời

18

Cách hack để làm những gì bạn muốn là đưa dòng mã này ở đầu vòng lặp của bạn (sau khi the_post() phần:

if(get_post_status()=='private') continue; 

Đây là hack cách vì WordPress của bạn vẫn đang tải bài đăng đó từ cơ sở dữ liệu và bao gồm số lượng bài đăng, v.v., nhưng bỏ qua nó khi hiển thị nó. Nếu bạn tìm kiếm cụm từ chỉ trong các bài đăng riêng tư, bạn sẽ nhận được một trang trống mà không có bất kỳ lỗi nào, Ví dụ:

Cách chính xác để thực hiện việc này là thêm bộ lọc sửa đổi SQL được sử dụng để tạo t anh ấy liệt kê các bài đăng. Phần khó khăn là không lọc nó nếu bạn đang ở trong phần quản trị, nếu không bạn sẽ không bao giờ thấy các bài đăng riêng tư của mình nữa. Nơi tốt nhất cho bộ lọc này nằm trong tệp functions.php của chủ đề của bạn. Đây là những gì bạn nên đặt ở đó:

add_filter('posts_where', 'no_privates'); 
function no_privates($where) { 
    if(is_admin()) return $where; 

    global $wpdb; 
    return " $where AND {$wpdb->posts}.post_status != 'private' "; 
} 
+0

Tôi đã gặp vấn đề tương tự với wordpress của tôi. Giải pháp của bạn có thể áp dụng. Bạn có thể cho biết tệp php có liên quan gì không? và, nơi nên add_filter ('posts_where', 'no_privates'); được thêm? – Elaine

+0

Cảm ơn bạn đã trả lời! Giải quyết vấn đề của tôi và không thể tìm thấy vấn đề này ở bất kỳ đâu trên web. –

+0

+ Elaine Tệp php là functions.php và nằm trong thư mục chủ đề của bạn. Bạn có thể thêm mã này vào bất cứ đâu trong hàm functions.php, chẳng hạn như trực tiếp sau

0

Đây không phải là giải pháp trực tiếp cho câu hỏi chính xác, nhưng một cách bạn có thể ẩn những bài đăng đó là gán chúng vào một danh mục đặc biệt, sau đó ẩn danh mục đó khỏi hiển thị trong vòng lặp. Để loại trừ bài đăng của một thể loại nhất định từ màn hình, bên trong vòng lặp (ngay sau khi) statement() sử dụng dòng mã này:

<?php if (in_category('3')) continue; ?> 

Trong ví dụ này, 3 là loại ID, chủng loại để loại trừ, và mã chỉ yêu cầu WordPress tiếp tục bài đăng tiếp theo mà không hiển thị bài đăng này.

1

Vì vậy, nếu không có ai là để xem các bài đăng riêng tư, bao gồm cả quản trị viên, tại sao không chỉ sửa status của họ để chưa được công bố hoặc dự thảo?

+0

Một lý do là bạn có rất nhiều người dùng và họ đang đặt bài đăng thành riêng tư ngay cả khi bạn nói chưa được xuất bản hoặc dự thảo sẽ là giải pháp tốt hơn. –

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