私はカスタム投稿タイプrecipes
を持っています。ニュースを自動的にデータベースに集約するためにcronスクリプトを使用しています。
現在インポート中で、 'Pending Review'として保存されています。公開されるすべての集約ニュースを一覧表示する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' );
これを助けてくれてありがとう。
ここでそれを行う方法についてのステップバイステップの説明で素晴らしいステップがあります 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分であなたのカスタム投稿ステータスを起動して実行することができ、時間を節約できました!
あなたのコードは健全でなければならず、そして$ wp_post_statusesグローバル配列に望ましいステータスを追加するべきです。
あなたはそれが管理者ドロップダウンに表示されることを期待しているなら、これは継続的な問題です: https://core.trac.wordpress.org/ticket/12706
カスタム投稿タイプ「recipes」に投稿ステータス「集約」を登録します。
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;
});