問題描述
我一直在瀏覽 google 的解決方案。我正在為 log-in 訪問者編寫一個自定義帖子型別的外掛。我最初寫了一個沒有自定義帖子型別的 mock-up,然後我從 google 搜尋到這裡,看到一個截圖,顯示了一個自定義帖子型別的示例來儲存有關律師的資訊。它表明有人重新設計了”add new” /”edit” 頁面,為自定義帖子型別提供了全新的介面。
我想知道如果 wordpress @ stackexchange 將有任何資源重新設計自定義帖子型別”add/edit” 頁面。
我不記得我找到那篇文章的搜尋字詞。
謝謝,-Zack
最佳解決方案
你所提到的問題/答案是 Tips for using WordPress as a CMS 。
該答案中釋出的截圖是使用可用於自定義帖子型別的 register_meta_box_cb 引數建立的。
register_meta_box_cb 必須指定包含元框程式碼的回撥函式。
要建立元框,您可以使用內建在 add_meta_box function 中的 WordPress,它還需要一個功能來儲存輸入的資料。
以下是我建立的一些示例程式碼,用於向我的個人網站上使用的投資組合資訊型別新增 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);
次佳解決方案
當我在研究同樣的事情時,我發現這篇文章很有趣:
How to Create A Custom WordPress Meta Box Instead of Using WordPress Custom Fields
Learning how to create custom WordPress meta boxes allow you to make professional UI elements for yourself and your clients. This WordPress meta box tutorial will show you how to add admin UI elements to the edit post/page screens.
克里斯是正確的錢,雖然額外的資源沒有傷害:)
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。