我尝试编写自己的插件,但每次我收到错误或元数据都没有正确显示。
这是我的插件代码 看到它显示在标题顶部的代码。我想在“编辑器”框下面显示它 我很累,但没有正确显示。
<?php
/*
Plugin Name: party event
Plugin URI: http://careertracker.net
Version: 1.0
Author: Savan Paun
Description: event sample plugin
*/
// Registers the new post type and taxonomy
function wpt_event_posttype() {
register_post_type( 'events',
array(
'labels' => array(
'name' => __( 'Events' ),
'singular_name' => __( 'Event' ),
'add_new' => __( 'Add New Event' ),
'add_new_item' => __( 'Add New Event' ),
'edit_item' => __( 'Edit Event' ),
'new_item' => __( 'Add New Event' ),
'view_item' => __( 'View Event' ),
'search_items' => __( 'Search Event' ),
'not_found' => __( 'No events found' ),
'not_found_in_trash' => __( 'No events found in trash' )
),
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ),
'capability_type' => 'post',
'rewrite' => array("slug" => "events"), // Permalinks format
'menu_position' => 5,
'register_meta_box_cb' => 'add_events_metaboxes'
)
);
}
add_action( 'init', 'wpt_event_posttype' );
function add_events_metaboxes()
{
?>
<table width=450 border=1>
<tr>
<td width=139>Foods</td>
<td width=295>
<label for=select></label>
<select name=food id=food>
<option value="Pizza">Pizza</option>
<option value="Hotdog">Hotdog</option>
</select>
</td>
</tr>
<tr>
<td>Tea</td>
<td><select name=tez id=tea>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select></td>
</tr>
<tr>
<td>Person</td>
<td><label for=textfield></label>
<input type=text name=textfield id=textfield /></td>
</tr>
</table>
<?php
}
?>
答案 0 :(得分:0)
请参阅下面的完整工作代码:
<?php
/*
Plugin Name: party event
Plugin URI: http://careertracker.net
Version: 1.0
Author: Savan Paun
Description: event sample plugin
*/
// Registers the new post type and taxonomy
function wpt_event_posttype() {
register_post_type( 'events',
array(
'labels' => array(
'name' => __( 'Events' ),
'singular_name' => __( 'Event' ),
'add_new' => __( 'Add New Event' ),
'add_new_item' => __( 'Add New Event' ),
'edit_item' => __( 'Edit Event' ),
'new_item' => __( 'Add New Event' ),
'view_item' => __( 'View Event' ),
'search_items' => __( 'Search Event' ),
'not_found' => __( 'No events found' ),
'not_found_in_trash' => __( 'No events found in trash' )
),
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ),
'capability_type' => 'post',
'rewrite' => array("slug" => "events"), // Permalinks format
'menu_position' => 5,
)
);
}
add_action( 'init', 'wpt_event_posttype' );
add_action( 'admin_init', 'events_init' );
add_action( 'save_post', 'event_meta_box_save' );
function events_init() {
add_meta_box("events-information", "Events Information", "events_meta_options", "events", "normal", "high");
}
function events_meta_options( $post ) {
$values = get_post_custom( $post->ID );
$person = isset( $values['person'] ) ? esc_attr( $values['person'][0] ) : '';
$foods = isset ( $values['foods'] ) ? esc_attr( $values['foods'][0] ) : '';
$tea = isset ( $values['tea'] ) ? esc_attr( $values['tea'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<table width="100%" border="0" class="options" cellspacing="5" cellpadding="5">
<tr>
<td width="1%">
<label for="foods"><?php _e('Foods', 'Events'); ?></label>
</td>
<td width="10%">
<select name='foods' id='foods'>
<option value="Pizza" <?php if ($foods) selected( $foods, 'Pizza' ); ?>><?php _e( 'Pizza', 'Events' )?></option>
<option value="Hotdog" <?php if ($foods) selected( $foods, 'Hotdog' ); ?>><?php _e( 'Hotdog', 'Events' )?></option>
</select>
</td>
</tr>
<tr>
<td width="1%">
<label for="tea"><?php _e('Tea', 'Events'); ?></label>
</td>
<td width="10%">
<select name='tea' id='tea'>
<option value="Yes" <?php if ($tea) selected( $tea, 'Yes' ); ?>><?php _e( 'Yes', 'Events' )?></option>
<option value="No" <?php if ($tea) selected( $tea, 'No' ); ?>><?php _e( 'No', 'Events' )?></option>
</select>
</td>
</tr>
<tr>
<td width="1%">
<label for="person"><?php _e('Person', 'Events'); ?></label>
</td>
<td width="10%">
<input type="text" id="person" name="person" value="<?php echo $person; ?>" placeholder="<?php _e('Enter person name', 'Events'); ?>" style="width:90%; padding: 5px 10px; line-height: 20px;"/>
</td>
</tr>
</table>
<?php
}
function event_meta_box_save( $post_id )
{
global $post;
$custom_meta_fields = array( 'person', 'foods', 'tea');
// Bail if we're doing an auto save
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
// if our nonce isn't there, or we can't verify it, bail
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
// if our current user can't edit this post, bail
if( !current_user_can( 'edit_post' ) ) return;
// now we can actually save the data
$allowed = array(
'a' => array(
'href' => array(),
'title' => array()
),
'br' => array(),
'em' => array(),
'strong' => array(),
'p' => array(),
'span' => array(),
'div' => array(),
);
foreach( $custom_meta_fields as $custom_meta_field ){
if( isset( $_POST[$custom_meta_field] ) )
update_post_meta($post->ID, $custom_meta_field, wp_kses( $_POST[$custom_meta_field], $allowed) );
}
}
答案 1 :(得分:0)
问题是您的register_meta_box_cb
回调函数应该是:
function add_events_metaboxes()
{
add_meta_box(
'box_id',
'box_title',
'print_mb_so_23236266',
'events',
'normal',
'high'
);
}
然后使用HTML输出函数print_meta_box()
:
function print_mb_so_23236266() {
?>
<table width="450" border="1">
<!-- ETC -->
<?php
}
但也许你正在寻找一些like this(没有元框和摆脱register_meta_box_cb
):
add_action( 'edit_form_after_editor', 'print_mb_so_23236266' );
function print_mb_so_23236266( $post )
{
if( 'events' !== $post->post_type )
return;
?>
<table width="450" border="1">
<tr>
<td width="139">Foods</td>
<td width="295">
<label for="select"></label>
<select name="food" id="food">
<option value="Pizza">Pizza</option>
<option value="Hotdog">Hotdog</option>
</select>
</td>
</tr>
<tr>
<td>Tea</td>
<td><select name="tez" id="tea">
<option value="Yes">Yes</option>
<option value="No">No</option>
</select></td>
</tr>
<tr>
<td>Person</td>
<td><label for="textfield"></label>
<input type="text" name="textfield" id="textfield" /></td>
</tr>
</table>
<?php
}