该答案中发布的屏幕截图是使用
register_meta_box_cb
可用于自定义帖子类型的参数。
register\\u meta\\u box\\u cb必须指定包含meta框代码的回调函数。
要创建元框,可以使用内置的WordPressadd_meta_box function 这还需要在保存帖子时保存输入数据的功能。
下面是我创建的一些示例代码,用于在我个人网站上使用的公文包帖子类型中添加2个自定义元框。
“这是什么?”;“项目”;我创建的帖子类型包含以下参数:
\'register_meta_box_cb\' => \'c3m_project_meta\',
下面的第一个函数是register\\u meta\\u box\\u 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);