Trạng thái bài đăng mới cho loại bài đăng tùy chỉnh


13

Tôi có một loại bài tùy chỉnh recipes. Tôi đang sử dụng tập lệnh cron để tự động tổng hợp tin tức vào cơ sở dữ liệu.

Nó hiện đang được nhập khẩu và lưu dưới dạng 'Đang chờ xem xét'. Có thể tạo một trạng thái bài đăng khác được gọi là Aggregateddanh sách tất cả các tin tức tổng hợp sẽ được công bố?

Tôi đã thử sử dụng register_post_statuschức năng này, tuy nhiên điều này dường như không hoạt động:

function custom_post_status(){
    register_post_status( 'aggregated', array(
        'label'                     => _x( 'Aggregated', 'recipes' ),
        'public'                    => false,
        'exclude_from_search'       => true,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Aggregated <span class="count">(%s)</span>', 'Aggregated <span class="count">(%s)</span>' ),
    ) );
}
add_action( 'init', 'custom_post_status' );

Cảm ơn sự giúp đỡ với điều này.


Tôi nghĩ rằng mã là đúng. Có lẽ bạn có nguồn này trong một chức năng khác để gọi này. Khi chạy add_action ()?
bueltge

Bạn có thể vui lòng giải thích câu trả lời của bạn chi tiết hơn? cảm ơn!
dclawson

Là add_action ('init' bên trong một lớp hoặc hàm, ở đó bạn gọi về một hook khác. Có thể, bạn bắt đầu điều này với lat và hook init cũng không thể bắn.
bueltge

Làm thế nào bạn giải quyết vấn đề này? Tôi có chính xác cùng một vấn đề bây giờ. Tôi muốn thêm trạng thái tùy chỉnh mới vào danh sách thả xuống của khu vực quản trị viên tùy chỉnh bài đăng, cho phép người dùng chọn (Pendig Reveiw, Dự thảo, NEW_CUSTOM_STATUS) từ danh sách Stati ...
Greeso

Câu trả lời:


9

Có một mô tả Từng bước tuyệt vời về cách thực hiện điều đó tại đây http://jamescollings.co.uk/blog/wordpress-create-custom-post-status/

Để thêm trạng thái bài đăng tùy chỉnh của bạn vào menu thả xuống, chỉ cần thêm đoạn sau vào tập lệnh chức năng chủ đề của bạn:

add_action('admin_footer-post.php', 'jc_append_post_status_list');
function jc_append_post_status_list(){
 global $post;
 $complete = '';
 $label = '';
 if($post->post_type == 'recipes'){
      if($post->post_status == 'aggregated'){
           $complete = ' selected=\"selected\"';
           $label = '<span id=\"post-status-display\"> Aggregated</span>';
      }
      echo '
      <script>
      jQuery(document).ready(function($){
           $("select#post_status").append("<option value=\"aggregated\" '.$complete.'>Aggregated</option>");
           $(".misc-pub-section label").append("'.$label.'");
      });
      </script>
      ';
  }
}

Với điều này, bạn có trạng thái bài đăng tùy chỉnh của mình và chạy trong 5 phút, giúp tôi tiết kiệm rất nhiều thời gian!


1
Liên kết bị hỏng. Đây là phiên bản mới nhất trên archive.org .
rinogo

@rinogo cảm ơn người đàn ông, đã chuyển sang liên kết archive.org mà bạn cung cấp
Larzan

7

Mã của bạn phải là âm thanh và nên thêm trạng thái mong muốn vào mảng toàn cầu $ wp_post_statuses.

Tuy nhiên, nếu bạn đang mong đợi nó xuất hiện trong trình đơn thả xuống của quản trị viên, thì đây là một vấn đề đang diễn ra: https://core.trac.wordpress.org/ticket/12706


1

Đăng ký trạng thái bài đăng "tổng hợp" cho loại "công thức" tùy chỉnh bài đăng:

register_post_status( 'aggregated', array(
                    'label'                     => _x( 'Aggregated ', 'post status label', 'bznrd' ),
                    'public'                    => true,
                    'label_count'               => _n_noop( 'Aggregated s <span class="count">(%s)</span>', 'Aggregated s <span class="count">(%s)</span>', 'plugin-domain' ),
                    'post_type'                 => array( 'recipes' ), // Define one or more post types the status can be applied to.
                    'show_in_admin_all_list'    => true,
                    'show_in_admin_status_list' => true,
                    'show_in_metabox_dropdown'  => true,
                    'show_in_inline_dropdown'   => true,
                    'dashicon'                  => 'dashicons-businessman',
                ) );

Trong metabox xuất bản màn hình chỉnh sửa bài đăng "tùy chỉnh", thêm trạng thái bài đăng tùy chỉnh trong danh sách thả xuống và thay đổi nhãn nút "Lưu bản nháp" nếu trạng thái bài đăng được chọn là "tổng hợp":

add_action('admin_footer-post.php',function(){

    global $post;
    $complete = '';
    $label = '';

    if($post->post_type == 'recipes') {

        if ( $post->post_status == 'aggregated' ) {
            $complete = ' selected=\"selected\"';
            $label    = 'Aggregated';
        }

        $script = <<<SD


       jQuery(document).ready(function($){
           $("select#post_status").append("<option value=\"aggregated\" '.$complete.'>Aggregated</option>");

           if( "{$post->post_status}" == "aggregated" ){
                $("span#post-status-display").html("$label");
                $("input#save-post").val("Save Aggregated");
           }
           var jSelect = $("select#post_status");

           $("a.save-post-status").on("click", function(){

                if( jSelect.val() == "aggregated" ){

                    $("input#save-post").val("Save Aggregated");
                }
           });
      });


SD;

        echo '<script type="text/javascript">' . $script . '</script>';
    }

});

Thêm trạng thái bài đăng tùy chỉnh trong màn hình chỉnh sửa nhanh của lưới quản trị bài đăng tùy chỉnh:

add_action('admin_footer-edit.php',function() {
    global $post;
    if( $post->post_status == 'recipes' ) {
        echo "<script>
    jQuery(document).ready( function() {
        jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"aggregated\">Aggregated</option>' );
    });
    </script>";
    }
});

Hiển thị tổng trạng thái bài đăng tùy chỉnh trong lưới quản trị bài đăng tùy chỉnh:

add_filter( 'display_post_states', function( $statuses ) {
    global $post;

    if( $post->post_type == 'recipes') {
        if ( get_query_var( 'post_status' ) != 'aggregated' ) { // not for pages with all posts of this status
            if ( $post->post_status == 'aggregated' ) {
                return array( 'Aggregated' );
            }
        }
    }
    return $statuses;
});

Chính xác những gì tôi đang tìm kiếm. Tuy nhiên, nó vẫn bỏ lỡ trạng thái bài đăng tùy chỉnh trong trình đơn thả xuống chỉnh sửa trạng thái bài đăng hàng loạt.
martin schwartz
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.