Rediseño de la página "Agregar nuevo" del tipo de mensaje personalizado

8

He estado navegando por todo Google para encontrar una solución a esto. Estoy escribiendo un complemento de tipos de publicación personalizado para el trabajo para iniciar sesión en los visitantes que recibimos. Inicialmente escribí una maqueta sin tipos de publicaciones personalizadas, luego vine por una búsqueda en Google y vi una captura de pantalla que mostraba un ejemplo de tipos de publicaciones personalizadas para almacenar información sobre abogados. Demostró que alguien rediseñó la página "agregar nuevo" / "editar" para tipos de publicaciones personalizadas con una interfaz completamente nueva.

Me preguntaba si wordpress @ stackexchange tendría algún recurso para rediseñar las páginas personalizadas de "agregar / editar".

Sin embargo, no recuerdo los términos de búsqueda que hice para encontrar ese artículo.

Gracias
-Zack

Zack
fuente

Respuestas:

11

La pregunta / respuesta a la que te estás refiriendo fue Consejos para usar WordPress como CMS .

Las capturas de pantalla publicadas en esa respuesta se crearon utilizando el register_meta_box_cbargumento disponible para los tipos de publicaciones personalizadas.

register_meta_box_cb debe especificar una función de devolución de llamada que contenga el código para el meta box.

Para crear el meta cuadro, puede usar la función incorporada de WordPress add_meta_box que también requiere una función para guardar los datos ingresados ​​cuando se guarda la publicación.

Aquí hay un código de ejemplo que creé para agregar 2 meta cuadros personalizados a mi tipo de publicación de cartera que uso en mi sitio web personal.

El tipo de publicación "Proyectos" que creé contenía este argumento:

'register_meta_box_cb' => 'c3m_project_meta',

La primera función a continuación es la función de devolución de llamada para register_meta_box_cb. Los siguientes 2 generan el html para los meta cuadros en la página de agregar publicación y los últimos 2 guardan los datos ingresados.

function c3m_project_meta() {
        add_meta_box('_c3m_project_url', __('Enter Website Url') , 'c3m_project_url', 'project', 'side', 'low');
        add_meta_box('_c3m_project_work', __('Enter Work Done on Project') , 'c3m_project_work', 'project', 'side', 'low');

        }


    function c3m_project_url($post) {
        global $post;
        echo  '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
        $projecturl = get_post_meta($post->ID, '_projecturl', true);
        echo '<input type="text" name="_projecturl" value="' . $projecturl . '" class="widefat" />' ; 
        }

    function c3m_project_work($post) {
        global $post;
        echo  '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
        $projectwork = get_post_meta($post->ID, '_projectwork', true);
        echo '<input type="text" name="_projectwork" value="' . $projectwork . '" class="widefat" />' ; 
        }


    add_action('admin_init', 'c3m_project_meta');



    function c3m_save_project_meta( $post_id , $post ) { 

        if ( !wp_verify_nonce( $_POST [ 'banner-buttonmeta_noncename' ], plugin_basename( __FILE__ ) )) { return $post ->ID; 

        }

        if ( !current_user_can( 'edit_post' , $post ->ID )) return $post ->ID; 
        $c3m_projecturl [ '_projecturl' ] = $_POST [ '_projecturl' ]; 
                    foreach ( $c3m_projecturl as $key => $value ) { 
                    if ( $post ->post_type == 'revision' ) return ; 

                    $value = implode( ',' , ( array ) $value );
                    if (get_post_meta( $post ->ID, $key , FALSE)) { 
                    update_post_meta( $post ->ID, $key , $value ); } else { 
                    add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key ); 

                    }

        $c3m_projectwork [ '_projectwork' ] = $_POST [ '_projectwork' ]; 
                    foreach ( $c3m_projectwork as $key => $value ) { 
                    if ( $post ->post_type == 'revision' ) return ; 

                    $value = implode( ',' , ( array ) $value );
                    if (get_post_meta( $post ->ID, $key , FALSE)) { 
                    update_post_meta( $post ->ID, $key , $value ); } else { 
                    add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key ); 

                    }
        }

   add_action( 'save_post' , 'c3m_save_project_meta' , 1, 2); 
Chris_O
fuente
Ajá, está bien, así que solo vi una caja meta. Pensé que era una especie de "truco" para WordPress, jajaja. ¡Gracias!
Zack
4

Cuando estaba investigando el mismo asunto, este artículo me pareció bastante interesante:

Cómo crear un meta cuadro de WordPress personalizado en lugar de usar campos personalizados de WordPress

Aprender a crear meta cuadros personalizados de WordPress le permite crear elementos de interfaz de usuario profesionales para usted y sus clientes. Este tutorial de cuadro de meta de WordPress le mostrará cómo agregar elementos de IU de administrador a las pantallas de publicación / página de edición.

Chris tiene razón en el dinero, aunque un recurso adicional no hace daño :)

Noel Tock
fuente