맞춤 게시물 유형에 대한 새로운 게시물 상태


13

사용자 정의 게시물 유형이 recipes있습니다. 뉴스를 데이터베이스에 자동으로 집계하기 위해 cron 스크립트를 사용하고 있습니다.

현재 가져 와서 '보류중인 검토'로 저장됩니다. 게시 Aggregated할 모든 집계 된 뉴스를 나열하는 다른 게시물 상태를 작성할 수 있습니까?

register_post_status함수를 사용해 보았지만 작동하지 않는 것 같습니다.

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' );

도움을 주셔서 감사합니다.


코드가 맞다고 생각합니다. 어쩌면이 함수를 호출하는 다른 함수 에이 소스가있을 수 있습니다. add_action ()을 실행할 때?
bueltge

더 자세한 답변을 설명해 주시겠습니까? 감사!
dclawson

클래스 또는 함수, 당신이 다른 후크에 대해이 전화 내부 ADD_ACTION ( '초기화'는인가 그것은 당신이 위도에이를 시작하고 후크 초기화 해고도 할 수있는, 할 수있다..
bueltge

이 문제를 어떻게 해결 했습니까? 나는 지금 정확히 같은 문제가 있습니다. 사용자 지정 게시물 관리 영역의 드롭 다운 목록에 새 사용자 지정 상태를 추가하고 싶습니다.이를 통해 사용자는 Stati ... 목록에서 (Pendig Reveiw, Draft, NEW_CUSTOM_STATUS)를 선택할 수 있습니다.
Greeso

답변:


9

http://jamescollings.co.uk/blog/wordpress-create-custom-post-status/ 에 대한 단계별 설명이 있습니다.

드롭 다운 메뉴에 사용자 정의 게시물 상태를 추가하려면 테마 기능 스크립트에 다음을 추가하십시오.

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>
      ';
  }
}

이것으로 당신은 5 분 안에 당신의 커스텀 포스트 상태를 만들어서 많은 시간을 절약 할 수있었습니다!


1
링크가 끊어졌습니다. 다음 은 archive.org의 최신 버전입니다 .
rinogo

@rinogo thanks man, 제공 한 archive.org 링크로 전환
Larzan


1

사용자 정의 게시물 유형 "레시피"에 대해 "집계 된"게시물 상태를 등록하십시오.

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',
                ) );

"레시피"사용자 정의 게시물 편집 화면의 게시 메타 박스에서 드롭 다운에 사용자 정의 게시물 상태를 추가하고 선택한 게시물 상태가 "집계 된"경우 "임시 저장"단추 레이블을 변경하십시오.

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>';
    }

});

사용자 지정 게시물 관리 표의 빠른 편집 화면에서 사용자 지정 게시물 상태를 추가하십시오.

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>";
    }
});

사용자 지정 게시물 관리 표에 사용자 지정 게시물 상태 총계를 표시합니다.

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;
});

정확히 내가 찾던 것. 그러나 대량 게시물 수정 상태 드롭 다운에서 여전히 맞춤 게시물 상태가 누락되었습니다.
마틴 슈워츠
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.