it-swarm.com.de

Benutzerdefinierter Beitragsstatus funktioniert nicht

Ich versuche, zwei benutzerdefinierte Post-Status zu erstellen. Ich habe den Codex verwendet, um den Code zu generieren, und das hat nicht funktioniert. Dann ging ich zu http://generatewp.com/post-status und es hat auch nicht funktioniert. Es wird nicht in der Dropdown-Liste neben "Status" in "Beitrag bearbeiten" angezeigt.

Sehen Sie etwas falsch mit meinem Code?

// ***** http://generatewp.com/post-status **** //

function custom_post_status() {

$args = array(
'label' => 'Reserve',
'label_count' => 'Reserve (%s)',
'public' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'exclude_from_search' => false,
);
register_post_status( 'Reserve', $args );

}

add_action( 'init', 'custom_post_status', 0 );

function custom_post_status_2() {

$args = array(
'label' => 'Ready to be Scheduled',
'label_count' => 'Ready to be Scheduled (%s)',
'public' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'exclude_from_search' => false,
);
register_post_status( 'Ready to be Scheduled', $args );

}

add_action( 'init', 'custom_post_status_2', 0 );

Vielen Dank!

5
Tara

Die post status -Werte scheinen im Kern fest zu sein. Hier ist der Statusfeldcode für den Bearbeitungsbildschirm:

<span id="post-status-display">
<?php
switch ( $post->post_status ) {
        case 'private':
                _e('Privately Published');
                break;
        case 'publish':
                _e('Published');
                break;
        case 'future':
                _e('Scheduled');
                break;
        case 'pending':
                _e('Pending Review');
                break;
        case 'draft':
        case 'auto-draft':
                _e('Draft');
                break;
}
?>
</span>

Der Kodex sagt :

HINWEIS: Diese Funktion fügt NICHT den Status des registrierten Beitrags zum Admin-Bereich hinzu. Diese Funktionalität steht noch aus. Bitte beziehen Sie sich auf Trac Ticket # 12706. Betrachten Sie den Aktions-Hook post_submitbox_misc_actions, um diesen Parameter hinzuzufügen.

Das # 12706 Ticket wurde vor 5 Jahren erstellt!

Daher denke ich nicht, dass dies derzeit vom Kern unterstützt wird.

Wenn Sie den Status eines Beitrags manuell in einen registrierten benutzerdefinierten Beitragsstatus ändern, wird er auf den Registerkarten des Bildschirms edit.php angezeigt.

Testen auf WP 4.1:

Wenn ich das Codex-Beispiel ausprobiere:

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

und ändere den Beitragsstatus eines Beitrags manuell in unread, dann ist der Status für diesen Beitrag not und wird in der Meta-Box angezeigt:

Missing status

Auf der anderen Seite wird es in Registerkarten auf dem Bildschirm edit.php angezeigt:

Shows in the edit.php tabs

5
birgire

Ich würde die Priorität von add_action auf 1 setzen und sehen, ob das alles behebt.

Nach meinem besten Wissen muss Priorität eine ganze Zahl zwischen 1 und 99 einschließlich sein.

Verwenden Sie 0 oder 100+ und ich glaube nicht, dass Ihre Aktion jemals ausgelöst wird.

Ich würde auch empfehlen, die Namen Ihrer registrierten Status so zu ändern, dass sie denen entsprechen, die vorhanden sind (z. B. Kleinbuchstaben ohne Leerzeichen und wahrscheinlich kurz).

register_post_status( 'reserve', $args );

register_post_status( 'ready', $args );

Ihre Etiketten lassen sie anständig aussehen.

0
Privateer