Rediseño de tipo de publicación personalizada "Agregar nuevo" página

8

He estado navegando por todo Google para encontrar una solución a esto. Estoy escribiendo un plugin de tipos de publicación personalizado para el trabajo para registrar a los visitantes que recibimos. Inicialmente escribí una maqueta sin tipos de publicaciones personalizadas, luego vine aquí desde 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. Se demostró que alguien rediseñó la página "agregar nuevo" / "editar" para tipos de publicaciones personalizados con una nueva interfaz.

Me preguntaba si wordpress @ stackexchange tendría recursos para rediseñar los tipos de publicación personalizados "agregar / editar" páginas.

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

Gracias,
-Zack

    
pregunta Zack 07.01.2011 - 22:22

2 respuestas

10

La pregunta / respuesta a la que se refiere es Consejos para usar WordPress como un CMS .

Las capturas de pantalla publicadas en esa respuesta se crearon usando el argumento register_meta_box_cb que está 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 box, puede usar WordPress integrado en la función add_meta_box , que también requiere una función para guardar datos cuando se guarda la publicación.

Aquí hay un código de ejemplo que creé para agregar 2 meta cajas personalizadas 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 2 siguientes muestran el html para los metacuadros en la página de agregar entrada y los 2 últimos 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); 
    
respondido por el Chris_O 08.01.2011 - 08:10
4

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

  

Cómo crear un Meta Box de WordPress personalizado en lugar de usar campos personalizados de WordPress

     

Aprender a crear meta box de WordPress personalizados le permite crear elementos de UI profesionales para usted y sus clientes. Este tutorial de meta caja de WordPress le mostrará cómo agregar elementos de la IU del administrador a las pantallas de publicación / página de edición.

Chris tiene razón en el dinero, aunque un recurso adicional no duele :)

    
respondido por el Noel Tock 09.01.2011 - 12:25

Lea otras preguntas en las etiquetas