
Jígaro
Quiero agregar un estado de publicación personalizado a mi publicación de blog.
He agregado el siguiente código en mi archivo functions.php, pero no puedo ver el estado de la publicación en la edición rápida, en la página de publicación nueva y en la página de edición de publicación. ¿Algún consejo?
function my_register_post_status() {
$my_status_args = array(
'label' => __('Activated', 'my'),
'label_count' => __('Activated', 'my'),
'exclude_from_search' => false,
'public' => true,
'publicly_queryable' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
);
register_post_status( 'status', $my_status_args );
}
add_action( 'init', 'my_register_post_status' );
Capturas de pantalla adjuntas:


Aquí hay un código para agregar un nuevo estado personalizado en la edición rápida y en la página nueva de publicación y la página de edición posterior.
function my_custom_status_creation(){
register_post_status( 'approved', array(
'label' => _x( 'Approved', 'post' ),
'label_count' => _n_noop( 'Approved <span class="count">(%s)</span>', 'Approved <span class="count">(%s)</span>'),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true
));
}
add_action( 'init', 'my_custom_status_creation' );
function my_custom_status_add_in_quick_edit() {
echo "<script>
jQuery(document).ready( function() {
jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"approved\">Approved</option>' );
});
</script>";
}
add_action('admin_footer-edit.php','my_custom_status_add_in_quick_edit');
function my_custom_status_add_in_post_page() {
echo "<script>
jQuery(document).ready( function() {
jQuery( 'select[name=\"post_status\"]' ).append( '<option value=\"approved\">Approved</option>' );
});
</script>";
}
add_action('admin_footer-post.php', 'my_custom_status_add_in_post_page');
add_action('admin_footer-post-new.php', 'my_custom_status_add_in_post_page');

Omar Tanti
Debe agregar algo de javascript para tener el estado como una opción en la selección. Prueba algo como lo siguiente:
function append_post_status_list() {
global $post;
$label = " Activate";
$complete = "<option value="activated">$label</option>";
if ( $post->post_status == 'activated' ) {
$label = " Activated";
$complete = "<option value="activated" selected='selected'>$label</option>";
}
ob_start();
?>
<script>
jQuery(document).ready(function ($) {
var label = "<?= $label ?>";
$("select#post_status").append("<?= $complete ?>");
if (' Activated' == label){
$(".misc-pub-section #post-status-display").html(label);
}
});
</script>
<?php
echo ob_get_clean();
}
add_action( 'admin_footer-post.php', 'append_post_status_list' );
Sí, lea el aviso aquí. codex.wordpress.org/Function_Reference/register_post_status Este artículo debería ayudar ibenic.com/create-custom-wordpress-post-status
–Andrew Schultz
29 de marzo de 2018 a las 17:42