Refonte de la page «Ajouter un nouveau type de message personnalisé»

8

J'ai parcouru tout Google pour trouver une solution à cela. J'écris un plugin de types de publication personnalisé pour le travail afin de connecter les visiteurs que nous recevons. J'ai d'abord écrit une maquette sans types de messages personnalisés, puis je suis venu ici à partir d'une recherche Google et j'ai vu une capture d'écran qui montrait un exemple de types de messages personnalisés pour stocker des informations sur les avocats. Cela a montré que quelqu'un avait repensé la page "ajouter un nouveau" / "modifier" pour les types de messages personnalisés avec une toute nouvelle interface.

Je me demandais si wordpress @ stackexchange aurait des ressources pour repenser les pages "ajouter / modifier" des types de messages personnalisés.

Cependant, je ne me souviens pas des termes de recherche que j'ai trouvés pour trouver cet article.

Merci,
-Zack

Zack
la source

Réponses:

11

La question / réponse à laquelle vous faites référence était Conseils pour utiliser WordPress en tant que CMS .

Les captures d'écran publiées dans cette réponse ont été créées à l'aide de l' register_meta_box_cbargument disponible pour les types de publication personnalisés.

register_meta_box_cb doit spécifier une fonction de rappel qui contient le code de la méta-boîte.

Pour créer la méta-boîte, vous pouvez utiliser la fonction add_meta_box intégrée à WordPress qui nécessite également une fonction pour enregistrer les données saisies lorsque le message est enregistré.

Voici un exemple de code que j'ai créé pour ajouter 2 métadonnées personnalisées à mon type de publication de portefeuille que j'utilise sur mon site Web personnel.

Le type de message "Projets" que j'ai créé contenait cet argument:

'register_meta_box_cb' => 'c3m_project_meta',

La première fonction ci-dessous est la fonction de rappel pour register_meta_box_cb. Les 2 suivants affichent le code html des métadonnées sur la page d'ajout de message et les 2 derniers enregistrent les données saisies.

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
la source
Aha, ok donc c'était juste une meta box que j'ai vu. J'ai pensé que c'était une sorte de "hack" pour wordpress, lol. Merci!
Zack
4

Lorsque je me suis penché sur la même question, j'ai trouvé cet article assez intéressant:

Comment créer une boîte Meta WordPress personnalisée au lieu d'utiliser des champs personnalisés WordPress

Apprendre à créer des métadonnées WordPress personnalisées vous permet de créer des éléments d'interface utilisateur professionnels pour vous et vos clients. Ce tutoriel WordPress meta box vous montrera comment ajouter des éléments d'administration UI aux écrans de modification de la publication / page.

Chris a raison sur l'argent, bien qu'une ressource supplémentaire ne fasse pas de mal :)

Noel Tock
la source