Forums

The forums ran from 2008-2020 and are now closed and viewable here as an archive.

Home Forums Back End [WP] – Custom Post Types Custom Fields Re: [WP] – Custom Post Types Custom Fields

#79880

This seems to work (somewhat).

Code:
// Create New Post Types

add_action(‘init’, ‘create_message_post_type’);
add_action(‘init’, ‘create_game_post_type’);
add_action(‘init’, ‘create_player_post_type’);

function create_message_post_type() {
register_post_type (
‘messages’, array (
‘labels’ => array (
‘name’ => ‘Messages’,
‘singular_name’ => ‘Message’,
‘add_new’ => ‘Add New Message’,
‘add_new_item’ => ‘Add New Message’,
‘edit’ => ‘Edit Message’,
‘edit_item’ => ‘Edit Message’,
‘new_item’ => ‘New Message’,
‘view’ => ‘View Message’,
‘view_item’ => ‘View Message’,
‘search_items’ => ‘Search Messages’,
‘not_found’ => ‘No messages found’,
‘not_found_in_trash’ => ‘No messages found in Trash’,
),
‘supports’ => array (
‘title’,
‘editor’,
‘thumbnail’,
‘excerpts’,
‘comments’,
‘revisions’
),
‘public’ => true,
‘rewrite’ => false,
‘query_var’ => true,
‘menu_position’ => 4
)
);
}

function create_game_post_type() {
register_post_type (
‘games’, array (
‘labels’ => array (
‘name’ => ‘Games’,
‘singular_name’ => ‘Game’,
‘add_new’ => ‘Add New Game’,
‘add_new_item’ => ‘Add New Game’,
‘edit’ => ‘Edit Games’,
‘edit_item’ => ‘Edit Game’,
‘new_item’ => ‘New Game’,
‘view’ => ‘View Game’,
‘view_item’ => ‘View Game’,
‘search_items’ => ‘Search Games’,
‘not_found’ => ‘No games found’,
‘not_found_in_trash’ => ‘No games found in Trash’,
),
‘supports’ => array (
‘title’,
‘editor’,
‘thumbnail’,
‘excerpts’,
‘comments’,
‘revisions’
),
‘public’ => true,
‘rewrite’ => false,
‘query_var’ => true,
‘menu_position’ => 5
)
);
}

function create_player_post_type() {
register_post_type (
‘players’, array (
‘labels’ => array (
‘name’ => ‘Roster’,
‘singular_name’ => ‘Player’,
‘add_new’ => ‘Add New Player’,
‘add_new_item’ => ‘Add New Player’,
‘edit’ => ‘Edit Roster’,
‘edit_item’ => ‘Edit Player’,
‘new_item’ => ‘New Player’,
‘view’ => ‘View Player’,
‘view_item’ => ‘View Player’,
‘search_items’ => ‘Search Players’,
‘not_found’ => ‘No players found’,
‘not_found_in_trash’ => ‘No players found in Trash’,
),
‘supports’ => array (
‘title’,
‘thumbnail’
),
‘public’ => true,
‘rewrite’ => false,
‘query_var’ => true,
‘menu_position’ => 6
)
);
}

// Create Taximonies
add_action( ‘init’, ‘create_team_taxonomies’ );
function create_team_taxonomies() {
register_taxonomy (
‘teams’,
array( ‘messages’,’games’,’players’ ),
array (
‘labels’ => array (
‘name’ => ‘Teams’,
‘singular_name’ => ‘Team’,
‘search_items’ => ‘Search Teams’,
‘popular_items’ => ‘Popular Teams’,
‘all_items’ => ‘All Teams’,
‘parent_item’ => ‘Parent Teams’,
‘parent_item_colon’ => ‘Parent Teams:’,
‘edit_item’ => ‘Edit Team’,
‘update_item’ => ‘Update Team’,
‘add_new_item’ => ‘Add New Team’,
‘new_item_name’ => ‘New Team Name’
),
‘hierarchical’ => true,
‘public’ => true,
‘show_ui’ => true,
‘query_var’ => ”,
‘show_tagcloud’ => true,
)
);
}

//Create Meta Boxes

$key = "key";
$meta_boxes = array(
"number" => array(
"name" => "number",
"title" => "Number",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"first_name" => array(
"name" => "first_name",
"title" => "First Name",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"last_name" => array(
"name" => "last_name",
"title" => "Last Name",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"height" => array(
"name" => "height",
"title" => "Height",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"weight" => array(
"name" => "weight",
"title" => "Weight",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"position" => array(
"name" => "position",
"title" => "Position",
"description" => "",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"grade" => array(
"name" => "grade",
"title" => "Grade",
"description" => "This is an example for a regular input field.",
"type" => "text",
"class" => "text",
"rows" => "",
"width" => "100%",
"options" => ""
),
"bio" => array(
"name" => "bio",
"title" => "Bio",
"description" => "",
"type" => "textarea",
"class" => "textarea",
"rows" => "6",
"width" => "100%",
"options" => ""
),
);

function create_meta_box() {
global $key;

if( function_exists( ‘add_meta_box’ ) ) {
add_meta_box( ‘new-meta-boxes’, ‘Player Details’, ‘display_meta_box’, ‘players’, ‘normal’, ‘high’ );
}
}

function display_meta_box() {
global $post, $meta_boxes, $key;

wp_nonce_field( plugin_basename( __FILE__ ), $key . ‘_wpnonce’, false, true );

$output = ”;
foreach($meta_boxes as $meta_box) {
$data = get_post_meta($post->ID, $key, true);

$output .= ‘<p style="font-size:1.1em; font-style:normal;">’ . $meta_box[’title’] . ‘<br />’ . "n";

if($meta_box[’type’] == ‘text’) { // plain text input
$output .= ‘<input type="text" name="’ . $meta_box[’name’] . ‘" value="’ . $data[$meta_box[’name’]] . ‘" style="width:’ . $meta_box[’width’] . ‘;" />’;
}

else if($meta_box[’type’] == ‘textarea’) { // textarea box
$output .= ‘<textarea name="’ . $meta_box[’name’] . ‘" style="width:’ . $meta_box[’width’] . ‘; height:100px;">’ . $data[$meta_box[’name’]] . ‘</textarea>’;
}

else if(($meta_box[’type’] == ‘checkbox’) && (!empty($meta_box[’options’]))) { // checkboxes
foreach($meta_box[’options’] as $checkbox_value) {
if($data[$meta_box[’name’]] != "") { // if array is empty, warnings will be issued, this circumvents it
$output .= ‘<input type="checkbox" name="’ . $meta_box[’name’] . ‘[]" value="’ . $checkbox_value . ‘" ‘ . (isset($data[$meta_box[’name’]]) && (in_array($checkbox_value, $data[$meta_box[’name’]])) ? ‘ checked="checked"’ : ”) . ‘/> ‘ . $checkbox_value . ‘ &nbsp; ‘ . "n";
} else {
$output .= ‘<input type="checkbox" name="’ . $meta_box[’name’] . ‘[]" value="’ . $checkbox_value . ‘"/> ‘ . $checkbox_value . ‘ &nbsp; ‘ . "n";
}
}
}

else if(($meta_box[’type’] == ‘radio’) && (!empty($meta_box[’options’]))) { // radio buttons

foreach($meta_box[’options’] as $radio_value) {
$output .= ‘<input type="radio" name="’ . $meta_box[’name’] . ‘" value="’ . $radio_value . ‘" ‘ . (isset($data[$meta_box[’name’]]) && ($data[$meta_box[’name’]] == $radio_value) ? ‘ checked="checked"’ : ”) . ‘/> ‘ . $radio_value . ‘ &nbsp; ‘ . "n";
}
}

else if(($meta_box[’type’] == ‘dropdown’) && (!empty($meta_box[’options’]))) { // dropdown lists

$output .= ‘<select name="’ . $meta_box[’name’] . ‘">’ . "n";
if (isset($data[$meta_box[’name’]])) {
$output .= ‘<option selected>’. $data[$meta_box[’name’]] .'</option>’ . "n";
}

$output .= ‘<option value="">—————-</option>’ . "n";
foreach($meta_box[’options’] as $dropdown_key => $dropdown_value) {
$output .= ‘<option value="’ . $dropdown_value . ‘">’ . $dropdown_value . ‘</option>’ . "n";
}

$output .= ‘</select>’ . "n";
}

$output .= "</p>nn";
}

echo ‘<div>’ . "n" . $output . "n" . ‘</div>’ . "nn";

}

function save_meta_box( $post_id ) {
global $post, $meta_boxes, $key;

foreach( $meta_boxes as $meta_box ) {
$data[ $meta_box[ ‘name’ ] ] = $_POST[ $meta_box[ ‘name’ ] ];
}

if ( !wp_verify_nonce( $_POST[ $key . ‘_wpnonce’ ], plugin_basename(__FILE__) ) )
return $post_id;

if ( !current_user_can( ‘edit_post’, $post_id ))
return $post_id;

update_post_meta( $post_id, $key, $data );
}

add_action( ‘admin_menu’, ‘create_meta_box’ );
add_action( ‘save_post’, ‘save_meta_box’ );

First of all, I want to get it out of a foreach statement so I can Format each textbox in its own way (different widths, two on same line, etc.)

Secondly, I am trying to figure out how to make a second meta box for the next post type.

Third, I am trying to rewrite the permalink to reflect a textbox in my new metabox. In that post type, I got rid of the title field so I need to rewrite the permalink in order for each pots permalink to be unique.

Any help would be great and I will update y’all on anything I can figure out.

Thanks.