Làm cách nào tôi có thể làm cho nó để trang Thêm bài đăng mới có Hiển thị được đặt thành Riêng tư theo mặc định?


8

Tôi đang cố gắng tạo một plugin làm thay đổi trang Thêm bài đăng mới để trường Hiển thị nói "Riêng tư" theo mặc định:

Status: Draft
Visibility: **Private**
Publish immediately

[Publish]

... trái ngược với những gì WordPress thường giả định:

Status: Draft
Visibility: **Public**
Publish immediately

[Publish]

Hiện tại, tôi đang sử dụng bộ lọc "wp_insert_post_data" và điều đó cho phép tôi thay đổi bất kỳ bài đăng nào có post_status "tự động nháp" thành "riêng tư". Trong khi điều này hoạt động, có một tác dụng phụ ngoài ý muốn: Thay đổi post_status thành "riêng tư" dường như tự động xuất bản bài đăng, thay đổi nút trong trình chỉnh sửa thành "Cập nhật". Hơn nữa, nếu người dùng lưu trước khi chỉ định tiêu đề, bài đăng sẽ được xuất bản với tiêu đề "Tự động nháp".

Có cách nào để tôi có thể thay đổi Hiển thị thành Riêng tư theo cách mặc định, theo cách không tự động xuất bản bài đăng và thay đổi nút thành "Cập nhật" không? Trong vanilla WordPress, người dùng có thể tự thay đổi mức độ hiển thị thành Riêng tư và nút vẫn là Xuất bản ... Tôi chỉ cần đạt được điều đó thông qua một plugin. Tôi cũng muốn đảm bảo rằng "công chúng" vẫn có thể được lựa chọn bởi người dùng, nếu họ muốn.

Cảm ơn!

Câu trả lời:


-1

vì bạn đang phát triển trình cắm, tôi giả sử bạn không muốn chạm vào bất kỳ tệp nào bên ngoài wp-content / plugin hoặc ../theme cho vấn đề đó.

Tuy nhiên, nếu đó không phải là trường hợp, hãy làm theo:
Đi tới wp-admin / gồm / meta-box.php và tìm:

$visibility = 'public';
$visibility_trans = __('Public');

Bây giờ thay đổi nó để rõ ràng:

$visibility = 'private';
$visibility_trans = __('Private');

Một lần nữa, điều này ảnh hưởng đến tệp meta-box.php nằm ngoài thư mục plugin. Tuy nhiên, tôi nghĩ rằng cách tiếp cận bạn nên thực hiện là tạo một hộp meta mới, thêm cài đặt hiển thị tùy chỉnh của bạn (tức là riêng tư) và làm cho cái sau ghi đè cài đặt hiển thị WP mặc định .

Tốt nhất,
Chris


2
Các giải pháp yêu cầu bạn sửa đổi các tệp cốt lõi sẽ luôn bị kiểm soát khi bạn cập nhật. Vì vậy, họ thực sự không có giải pháp.
Drew Gourley

Đồng ý, nhưng trừ khi tôi nhầm, tôi tin rằng phần in đậm có thể đạt được thông qua một plugin thông thường. Nếu đó là trường hợp, thì đó là một giải pháp tốt, chỉ cần làm việc nhiều hơn một chút so với những gì tôi muốn làm.
Matt Refghi

3

từ plugin; sử dụng hành động 'post_submitbox_misc_ilities' và một số truy vấn để bắt người dùng Biểu mẫu xuất bản: http://wordpress.org/extend/plugins/private-post-by-default/

function default_post_visibility(){
global $post;

if ( 'publish' == $post->post_status ) {
    $visibility = 'public';
    $visibility_trans = __('Public');
} elseif ( !empty( $post->post_password ) ) {
    $visibility = 'password';
    $visibility_trans = __('Password protected');
} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
    $visibility = 'public';
    $visibility_trans = __('Public, Sticky');
} else {
    $post->post_password = '';
    $visibility = 'private';
    $visibility_trans = __('Private');
} ?>

<script type="text/javascript">
    (function($){
        try {
            $('#post-visibility-display').text('<?php echo $visibility_trans; ?>');
            $('#hidden-post-visibility').val('<?php echo $visibility; ?>');
            $('#visibility-radio-<?php echo $visibility; ?>').attr('checked', true);
        } catch(err){}
    }) (jQuery);
</script>
<?php
}

add_action( 'post_submitbox_misc_actions' , 'default_post_visibility' );

?>

Điều này phá vỡ các bản nháp và tự động xuất bản bài đăng khi bạn thực hiện "Lưu bản nháp". Bất kỳ giải pháp nào khác?

2

Cách chính xác để tự động đánh dấu một bài đăng là riêng tư là làm điều đó với bộ lọc wp_insert_post_data. Nó rất đơn giản:

add_filter( 'wp_insert_post_data', 'mark_post_private' );
function mark_post_private( $data ) {
    if ( 'your_post_type_goes_here' == $data['post_type'] ) {
        $data['post_status'] = 'private';
    }

    return $data;
}

Điều này là chính xác, nhưng nếu bạn muốn bài đăng có thể được bỏ vào thùng rác, bạn nên kiểm tra trước nếu ('thùng rác'! = $ Post ['post_status']).
alexg
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.