Riprogettazione della pagina "Aggiungi nuovo" di tipo di posta personalizzato


8

Ho cercato su Google dappertutto una soluzione a questo. Sto scrivendo un plug-in di tipi di post personalizzato per il lavoro per accedere ai visitatori che riceviamo. Inizialmente ho scritto un mock-up senza tipi di post personalizzati, poi sono venuto qui da una ricerca su Google e ho visto uno screenshot che mostrava un esempio di tipi di post personalizzati per archiviare informazioni su avvocati. Ha dimostrato che qualcuno ha riprogettato la pagina "aggiungi nuovo" / "modifica" per tipi di post personalizzati con un'interfaccia completamente nuova.

Mi chiedevo se wordpress @ stackexchange avrebbe avuto qualche risorsa per riprogettare le pagine "aggiungi / modifica" dei tipi di post personalizzati.

Non riesco a ricordare i termini di ricerca che ho fatto per trovare quell'articolo comunque.

Grazie,
-Zack

Risposte:


11

La domanda / risposta a cui ti riferisci era Suggerimenti per l'utilizzo di WordPress come CMS .

Gli screenshot pubblicati in quella risposta sono stati creati usando l' register_meta_box_cbargomento disponibile per i tipi di post personalizzati.

register_meta_box_cb deve specificare una funzione di callback che contenga il codice per la meta box.

Per creare la meta-box puoi usare la funzione add_meta_box di WordPress che richiede anche una funzione per salvare i dati inseriti quando il post viene salvato.

Ecco alcuni esempi di codice che ho creato per aggiungere 2 meta box personalizzate al mio tipo di post portfolio che utilizzo sul mio sito personale.

Il tipo di post "Progetti" che ho creato conteneva questo argomento:

'register_meta_box_cb' => 'c3m_project_meta',

La prima funzione di seguito è la funzione di richiamata per register_meta_box_cb. I seguenti 2 generano l'html per le meta box nella pagina Aggiungi post e gli ultimi 2 salvano i dati inseriti.

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

Ah, ok quindi era solo una meta box che ho visto. Ho pensato che fosse una sorta di "hack" per wordpress, lol. Grazie!
Zack,

4

Quando stavo esaminando la stessa questione, ho trovato questo articolo molto interessante:

Come creare una meta box di WordPress personalizzata invece di utilizzare i campi personalizzati di WordPress

Imparare a creare meta box personalizzate di WordPress ti consente di creare elementi dell'interfaccia utente professionali per te e i tuoi clienti. Questo tutorial sulla meta-box di WordPress ti mostrerà come aggiungere elementi dell'interfaccia utente dell'amministratore alle schermate di modifica post / pagina.

Chris ha ragione, anche se una risorsa aggiuntiva non fa male :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.