web-dev-qa-db-ja.com

カスタム投稿のステータスが機能していません

2つのカスタム投稿ステータスを作成しようとしています。私はCodexを使ってコードを生成しましたが、うまくいきませんでした。それから私は http://generatewp.com/post-status に行きました、そしてそれはどちらもうまくいきませんでした。 [投稿の編集]の[ステータス]の横にあるドロップダウンには表示されません。

私のコードに何か問題がありますか。

// ***** 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 );

ありがとうございました!

5
Tara

post statusの値はコアにハードコードされているようです。 これはステータスボックスコードです 編集画面の場合:

<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>

コーデックスは :と言います

注意:この機能は、登録された投稿ステータスを管理パネルに追加しません。この機能は将来の開発が保留されています。 Tracのチケット#12706を参照してください。このパラメータを追加するためのアクションフックpost_submitbox_misc_actionsを考えてください。

#12706 チケットは5年前に作成されました!

だから私はこれが現在コアでサポートされているとは思わない。

手動で投稿のステータスを登録済みのカスタム投稿ステータスに変更すると、edit.php画面のタブに表示されます。

WP 4.1でのテスト:

Codexの例を試してみると、

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

そして投稿の投稿ステータスを手動でunreadに変更すると、その投稿のステータスは not になりメタボックスに表示されます。

Missing status

一方、edit.php画面のタブに表示されます。

Shows in the edit.php tabs

5
birgire

Add_actionの優先順位を1に変更して、問題が解決するかどうかを確認します。

私の知る限りでは、優先順位は1から99までの整数でなければなりません。

0または100+を使用してください、そして、私はあなたの行動がこれまでに発生するとは思わない。

また、登録されているステータスの名前を、存在するものと一致するように変更することをお勧めします(たとえば、スペースなしでおそらくすべて小文字、おそらく短い)。

register_post_status( 'reserve', $args );

register_post_status( 'ready', $args );

あなたのラベルはそれらをきちんと見えるようにするでしょう。

0
Privateer