Thiết kế lại Loại bài tùy chỉnh Loại Thêm trang Mới


8

Tôi đã duyệt qua google để tìm giải pháp cho vấn đề này. Tôi đang viết một plugin loại bài đăng tùy chỉnh cho công việc cho khách truy cập đăng nhập mà chúng tôi nhận được. Ban đầu tôi đã viết một bản mô phỏng không có loại bài đăng tùy chỉnh, sau đó tôi đến đây từ một tìm kiếm google và thấy một ảnh chụp màn hình cho thấy một ví dụ về các loại bài đăng tùy chỉnh để lưu trữ thông tin về Luật sư. Nó cho thấy ai đó đã thiết kế lại trang "thêm mới" / "chỉnh sửa" cho các loại bài đăng tùy chỉnh với giao diện hoàn toàn mới.

Tôi đã tự hỏi nếu wordpress @ stackexchange sẽ có bất kỳ tài nguyên nào để thiết kế lại các trang "thêm / chỉnh sửa" bài đăng tùy chỉnh.

Tôi không thể nhớ các thuật ngữ tìm kiếm mà tôi đã làm để tìm bài viết đó.

Cảm ơn,
-Zack

Câu trả lời:


11

Câu hỏi / câu trả lời mà bạn đang đề cập đến là Mẹo sử dụng WordPress làm CMS .

Các ảnh chụp màn hình được đăng trong câu trả lời đó đã được tạo bằng cách sử dụng register_meta_box_cbđối số có sẵn cho các loại bài đăng tùy chỉnh.

register_meta_box_cb phải chỉ định chức năng gọi lại có chứa mã cho hộp meta.

Để tạo hộp meta, bạn có thể sử dụng chức năng WordPress tích hợp trong add_meta_box , cũng yêu cầu chức năng lưu dữ liệu đã nhập khi bài đăng được lưu.

Dưới đây là một số mã ví dụ mà tôi đã tạo để thêm 2 hộp meta tùy chỉnh vào loại bài đăng danh mục đầu tư mà tôi sử dụng trên trang web cá nhân của mình.

Loại bài đăng "Dự án" tôi tạo có chứa đối số này:

'register_meta_box_cb' => 'c3m_project_meta',

Hàm đầu tiên bên dưới là hàm gọi lại cho register_meta_box_cb. 2 mục sau xuất html cho các hộp meta trên trang thêm bài và 2 cuối lưu dữ liệu đã nhập.

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

Aha, ok vậy nó chỉ là một hộp meta tôi thấy. Tôi đoán nó là một loại "hack" cho wordpress, lol. Cảm ơn!
Zack

4

Khi tôi đang xem xét vấn đề tương tự, tôi thấy bài viết này khá thú vị:

Cách tạo Hộp Meta WordPress tùy chỉnh thay vì sử dụng Trường tùy chỉnh WordPress

Tìm hiểu cách tạo hộp meta WordPress tùy chỉnh cho phép bạn tạo các yếu tố UI chuyên nghiệp cho chính mình và khách hàng. Hướng dẫn về hộp meta WordPress này sẽ chỉ cho bạn cách thêm các yếu tố UI quản trị viên vào màn hình chỉnh sửa bài / trang.

Chris nói đúng về tiền, mặc dù một nguồn tài nguyên bổ sung không bị tổn thương :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.