Agregue un nuevo estado de publicación personalizado a través de register_post_status en WordPress

2 minutos de lectura

avatar de usuario
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:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

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

avatar de usuario
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' );

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad