Nowy status postu dla niestandardowego typu postu


13

Mam niestandardowy typ postu recipes. Używam skryptu cron do automatycznego agregowania wiadomości w bazie danych.

Obecnie jest importowany i zapisywany jako „Oczekuje na sprawdzenie”. Czy można utworzyć inny status posta o nazwie, Aggregatedktóry będzie zawierał wszystkie zagregowane wiadomości do opublikowania?

Próbowałem użyć tej register_post_statusfunkcji, ale to nie działało:

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

Dzięki za pomoc w tym.


Myślę, że kod jest poprawny. Być może masz to źródło w innej funkcji, aby to wywołać. Kiedy uruchomisz add_action ()?
bueltge

Czy mógłbyś bardziej szczegółowo wyjaśnić swoją odpowiedź? dzięki!
dclawson,

Jest dodatkowym działaniem („init” wewnątrz klasy lub funkcji, tam wywołujesz inny hak. Możliwe, że zaczniesz to do lat, a haczyk init nie będzie mógł wystrzelić.
bueltge

Jak rozwiązałeś ten problem? Mam teraz dokładnie ten sam problem. Chciałbym dodać nowy niestandardowy status do rozwijanej listy niestandardowego obszaru administracyjnego, który pozwala użytkownikowi wybrać (Pendig Reveiw, Draft, NEW_CUSTOM_STATUS) z listy Stati ...
Greeso

Odpowiedzi:


9

Świetny opis krok po kroku, jak to zrobić tutaj http://jamescollings.co.uk/blog/wordpress-create-custom-post-status/

Aby dodać niestandardowy status wpisu do menu rozwijanego, po prostu dodaj do skryptu funkcji motywów:

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

Dzięki temu masz status niestandardowego posta uruchomiony w 5 minut, dzięki czemu zaoszczędziłem sporo czasu!


1
Link jest zepsuty. Oto najnowsza wersja na archive.org .
rinogo,

@ rinogo dzięki, przełączono na podany przez Ciebie link archive.org
Larzan


1

Zarejestruj status „zagregowany” dla niestandardowych „przepisów” typu postu:

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

W metaboxie publikowania niestandardowego ekranu edycji „receptur”, dodając niestandardowy status postu w menu rozwijanym i zmień etykietę przycisku „Zapisz wersję roboczą”, jeśli status wybranego posta jest „zagregowany”:

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

});

Dodaj niestandardowy status wpisu na ekranie szybkiej edycji niestandardowej siatki administracyjnej wpisu:

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

Wyświetl niestandardową sumę statusu wpisu w niestandardowej siatce administratora posta:

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

Dokładnie tego szukałem. Nadal jednak brakuje niestandardowego statusu postu w menu rozwijanym statusu edycji posta zbiorczego.
martin schwartz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.