Mendesain Ulang Jenis Tulisan Kustom “Tambah Baru” halaman

8

Saya telah menjelajahi Google untuk mencari solusi. Saya sedang menulis plugin jenis posting khusus untuk pekerjaan masuk pengunjung yang kita dapatkan. Awalnya saya menulis mock-up tanpa tipe posting khusus, kemudian saya datang ke sini dari pencarian google dan melihat screenshot yang menunjukkan contoh tipe posting kustom untuk menyimpan informasi tentang Attorneys. Itu menunjukkan bahwa seseorang mendesain ulang halaman "add new" / "edit" untuk tipe posting khusus dengan antarmuka yang sama sekali baru.

Saya bertanya-tanya apakah wordpress @ stackexchange akan memiliki sumber daya untuk mendesain ulang jenis posting kustom "tambah / edit" halaman.

Saya tidak dapat mengingat istilah pencarian yang saya lakukan untuk menemukan artikel itu.

Terima kasih,
-Zack

Zack
sumber

Jawaban:

11

Pertanyaan / jawaban yang Anda maksudkan adalah Tips untuk menggunakan WordPress sebagai CMS .

Tangkapan layar yang diposting dalam jawaban itu dibuat menggunakan register_meta_box_cbargumen yang tersedia untuk jenis posting khusus.

register_meta_box_cb harus menentukan fungsi panggilan balik yang berisi kode untuk kotak meta.

Untuk membuat kotak meta, Anda dapat menggunakan fungsi add_meta_box bawaan WordPress yang juga membutuhkan fungsi untuk menyimpan data yang dimasukkan ketika pos disimpan.

Berikut adalah beberapa contoh kode yang saya buat untuk menambahkan 2 kotak meta khusus ke jenis pos portofolio yang saya gunakan di situs web pribadi saya.

Jenis posting "Proyek" yang saya buat mengandung argumen ini:

'register_meta_box_cb' => 'c3m_project_meta',

Fungsi pertama di bawah ini adalah fungsi panggilan balik untuk register_meta_box_cb. 2 berikut ini menampilkan html untuk kotak meta pada halaman tambahkan posting dan 2 terakhir menyimpan data yang dimasukkan.

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
sumber
Aha, ok jadi itu hanya kotak meta yang saya lihat. Saya pikir itu semacam "hack" untuk wordpress, lol. Terima kasih!
Zack
4

Ketika saya melihat hal yang sama, saya menemukan artikel ini cukup menarik:

Cara Membuat Kotak Meta WordPress Khusus dan bukannya Menggunakan Bidang Kustom WordPress

Mempelajari cara membuat kotak meta WordPress khusus memungkinkan Anda membuat elemen UI profesional untuk diri sendiri dan klien Anda. Tutorial kotak meta WordPress ini akan menunjukkan kepada Anda cara menambahkan elemen UI UI ke layar edit posting / halaman.

Chris benar pada uang, meskipun sumber daya tambahan tidak ada salahnya :)

Noel Tock
sumber