Redesenhando o tipo de mensagem personalizada “Add New”

8

Eu tenho procurado por todo o google por uma solução para isso. Estou escrevendo um plug-in de tipos de postagem personalizados para trabalhar com visitantes de login que recebemos. Inicialmente escrevi um mock-up sem tipos de post personalizado, então cheguei aqui de uma pesquisa no google e vi uma captura de tela que mostrava um exemplo de tipos de post personalizado para armazenar informações sobre advogados. Ele mostrou que alguém redesenhou a página "adicionar novo" / "editar" para tipos de postagem personalizados com uma interface totalmente nova.

Eu queria saber se o wordpress @ stackexchange teria recursos para redesenhar os tipos de postagem personalizados "adicionar / editar" páginas.

No entanto, não consigo lembrar os termos de pesquisa que encontrei para encontrar esse artigo.

Obrigado
-Zack

    
por Zack 07.01.2011 / 22:22

2 respostas

10

A pergunta / resposta a que você está se referindo foi Dicas para usar o WordPress como um CMS .

As capturas de tela postadas nessa resposta foram criadas usando o argumento register_meta_box_cb disponível para tipos de postagem personalizados.

register_meta_box_cb deve especificar uma função de retorno de chamada que contenha o código para a caixa meta.

Para criar a caixa meta, você pode usar o WordPress embutido na função add_meta_box , que também requer uma função para salvar as entradas digitadas. dados quando a postagem é salva.

Veja alguns códigos de exemplo que criei para adicionar duas caixas meta personalizadas ao tipo de postagem do meu portfólio que uso em meu site pessoal.

O tipo de postagem "Projetos" que criei continha este argumento:

'register_meta_box_cb' => 'c3m_project_meta',

A primeira função abaixo é a função de retorno de chamada para register_meta_box_cb. Os 2 seguintes geram o html para as caixas meta na página add post e os últimos 2 salvam os dados inseridos.

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); 
    
por Chris_O 08.01.2011 / 08:10
4

Quando estava analisando o mesmo assunto, achei este artigo bastante interessante:

  

Como criar uma caixa personalizada do WordPress em vez de usar campos personalizados do WordPress

     

Aprender como criar caixas meta do WordPress personalizadas permite que você crie elementos de interface do usuário profissionais para você e seus clientes. Este tutorial da caixa meta do WordPress mostrará como adicionar elementos da interface do usuário da administração às telas de publicação / página.

Chris está certo sobre o dinheiro, apesar de um recurso adicional não prejudicar :)

    
por Noel Tock 09.01.2011 / 12:25