web-dev-qa-db-fra.com

Nouvelle conception du type de message personnalisé "Ajouter un nouveau"

J'ai parcouru Google pour trouver une solution à ce problème. J'écris un plugin de type de post personnalisé pour le travail permettant de connecter les visiteurs que nous recevons. J'ai initialement écrit une maquette sans types de publications personnalisées, puis je suis arrivé ici à partir d'une recherche google et j'ai vu une capture d'écran montrant un exemple de types de publications personnalisées pour stocker des informations sur les avocats. Il en ressort que quelqu'un a remodelé la page "ajouter un nouveau"/"modifier" pour les types d'articles personnalisés avec une toute nouvelle interface.

Je me demandais si wordpress @ stackexchange aurait des ressources pour redéfinir les pages de type de publication personnalisée "ajouter/modifier".

Je ne me souviens cependant pas des termes de recherche que j'ai utilisés pour trouver cet article.

Merci,
- Zack

8
Zack

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'argument register_meta_box_cb disponible pour les types d'articles personnalisés.

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

Pour créer la méta-boîte, vous pouvez utiliser la fonction intégrée WordPress - add_meta_box qui requiert également une fonction permettant de sauvegarder les données saisies lorsque la publication est enregistrée.

Voici un exemple de code que j'ai créé pour ajouter 2 méta-boîtes 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 boîtes de méta sur la page d'ajout de publication 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); 
11
Chris_O

Quand j'ai étudié la même question, j'ai trouvé cet article très intéressant:

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

Apprendre à créer des méta-boîtes WordPress personnalisées vous permet de créer des éléments d’interface professionnelle pour vous et vos clients. Ce tutoriel sur les méta-boîtes WordPress vous montrera comment ajouter des éléments d'interface utilisateur d'administration aux écrans d'édition de publication/de page.

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

4
Noel Tock