カスタム投稿タイプの「新規追加」ページの再設計


8

私はこれを解決するためにグーグル全体を閲覧してきました。取得した訪問者をログインするための作業用のカスタム投稿タイププラグインを書いています。私は最初にカスタム投稿タイプなしのモックアップを書きました、それから私はここでグーグル検索から出てきて、弁護士に関する情報を保存するためにカスタム投稿タイプの例を示すスクリーンショットを見ました。それは、まったく新しいインターフェースを備えたカスタム投稿タイプの「新規追加」/「編集」ページを誰かが再設計したことを示していました。

wordpress @ stackexchangeにカスタム投稿タイプの「追加/編集」ページを再設計するためのリソースがあるかどうか疑問に思いました。

しかし、その記事を見つけるために行った検索語句を思い出せません。

ありがとう、
ザック

回答:


11

あなたが言及している質問/回答は、WordPressをCMSとして使用するためのヒントでした

その回答に投稿されたスクリーンショットregister_meta_box_cbは、カスタム投稿タイプに使用できる引数を使用して作成されました。

register_meta_box_cbは、メタボックスのコードを含むコールバック関数を指定する必要があります。

メタボックスを作成するには、WordPressに組み込まれているadd_meta_box関数を使用できます。これには、投稿の保存時に入力データを保存する関数も必要です。

これは、個人のWebサイトで使用するポートフォリオ投稿タイプに2つのカスタムメタボックスを追加するために作成したコードの例です。

私が作成した「Projects」投稿タイプには、次の引数が含まれています。

'register_meta_box_cb' => 'c3m_project_meta',

以下の最初の関数は、register_meta_box_cbのコールバック関数です。次の2つは投稿の追加ページのメタボックスのHTMLを出力し、最後の2つは入力されたデータを保存します。

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

あ、そうか、見ただけでメタボックスだった。私はそれがワードプレスのためのある種の「ハック」であると考えました、笑。ありがとう!
Zack

4

同じことを調べていたところ、この記事は非常に興味深いものでした。

WordPressカスタムフィールドを使用する代わりにカスタムWordPressメタボックスを作成する方法

カスタムのWordPressメタボックスを作成する方法を学ぶことで、自分とクライアントのためにプロフェッショナルなUI要素を作成できます。このWordPressメタボックスチュートリアルでは、管理UI要素を投稿の編集/ページ画面に追加する方法を示します。

追加のリソースで問題が発生することはありませんが、Chrisはお金にぴったりです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.