Created
February 4, 2014 01:37
-
-
Save steveosoule/8795961 to your computer and use it in GitHub Desktop.
WordPress Custom Post Type
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
/* | |
Plugin Name: My Custom Post Type | |
Plugin URI: http://wp.smashingmagazine.com/2012/11/08/complete-guide-custom-post-types/ | |
Version: 1.0 | |
Author: Steven Soule | |
Author URI: http://www.stevensoule.com | |
*/ | |
/*function my_custom_post_product() { | |
$args = array(); | |
register_post_type( 'product', $args ); | |
} | |
add_action( 'init', 'my_custom_post_product' );*/ | |
function my_custom_post_product() { | |
$labels = array( | |
'name' => _x( 'Products', 'post type general name' ), | |
'singular_name' => _x( 'Product', 'post type singular name' ), | |
'add_new' => _x( 'Add New', 'book' ), | |
'add_new_item' => __( 'Add New Product' ), | |
'edit_item' => __( 'Edit Product' ), | |
'new_item' => __( 'New Product' ), | |
'all_items' => __( 'All Products' ), | |
'view_item' => __( 'View Product' ), | |
'search_items' => __( 'Search Products' ), | |
'not_found' => __( 'No products found' ), | |
'not_found_in_trash' => __( 'No products found in the Trash' ), | |
'parent_item_colon' => '', | |
'menu_name' => 'Products' | |
); | |
$args = array( | |
'labels' => $labels, | |
'description' => 'Holds our products and product specific data', | |
'public' => true, | |
'menu_position' => 5, | |
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), | |
'has_archive' => true, | |
); | |
register_post_type( 'product', $args ); | |
} | |
add_action( 'init', 'my_custom_post_product' ); | |
function my_updated_messages( $messages ) { | |
global $post, $post_ID; | |
$messages['product'] = array( | |
0 => '', | |
1 => sprintf( __('Product updated. <a href="%s">View product</a>'), esc_url( get_permalink($post_ID) ) ), | |
2 => __('Custom field updated.'), | |
3 => __('Custom field deleted.'), | |
4 => __('Product updated.'), | |
5 => isset($_GET['revision']) ? sprintf( __('Product restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, | |
6 => sprintf( __('Product published. <a href="%s">View product</a>'), esc_url( get_permalink($post_ID) ) ), | |
7 => __('Product saved.'), | |
8 => sprintf( __('Product submitted. <a target="_blank" href="%s">Preview product</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), | |
9 => sprintf( __('Product scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview product</a>'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), | |
10 => sprintf( __('Product draft updated. <a target="_blank" href="%s">Preview product</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), | |
); | |
return $messages; | |
} | |
add_filter( 'post_updated_messages', 'my_updated_messages' ); | |
function my_contextual_help( $contextual_help, $screen_id, $screen ) { | |
if ( 'product' == $screen->id ) { | |
$contextual_help = '<h2>Products</h2> | |
<p>Products show the details of the items that we sell on the website. You can see a list of them on this page in reverse chronological order - the latest one we added is first.</p> | |
<p>You can view/edit the details of each product by clicking on its name, or you can perform bulk actions using the dropdown menu and selecting multiple items.</p>'; | |
} elseif ( 'edit-product' == $screen->id ) { | |
$contextual_help = '<h2>Editing products</h2> | |
<p>This page allows you to view/modify product details. Please make sure to fill out the available boxes with the appropriate details (product image, price, brand) and <strong>not</strong> add these details to the product description.</p>'; | |
} | |
return $contextual_help; | |
} | |
add_action( 'contextual_help', 'my_contextual_help', 10, 3 ); | |
/*function my_taxonomies_product() { | |
$args = array(); | |
register_taxonomy( 'product_category', 'product' $args ); | |
} | |
add_action( 'init', 'my_taxonomies_product', 0 );*/ | |
function my_taxonomies_product() { | |
$labels = array( | |
'name' => _x( 'Product Categories', 'taxonomy general name' ), | |
'singular_name' => _x( 'Product Category', 'taxonomy singular name' ), | |
'search_items' => __( 'Search Product Categories' ), | |
'all_items' => __( 'All Product Categories' ), | |
'parent_item' => __( 'Parent Product Category' ), | |
'parent_item_colon' => __( 'Parent Product Category:' ), | |
'edit_item' => __( 'Edit Product Category' ), | |
'update_item' => __( 'Update Product Category' ), | |
'add_new_item' => __( 'Add New Product Category' ), | |
'new_item_name' => __( 'New Product Category' ), | |
'menu_name' => __( 'Product Categories' ), | |
); | |
$args = array( | |
'labels' => $labels, | |
'hierarchical' => true, | |
); | |
register_taxonomy( 'product_category', 'product', $args ); | |
} | |
add_action( 'init', 'my_taxonomies_product', 0 ); | |
add_action( 'add_meta_boxes', 'product_price_box' ); | |
function product_price_box() { | |
add_meta_box( | |
'product_price_box', | |
__( 'Product Price', 'myplugin_textdomain' ), | |
'product_price_box_content', | |
'product', | |
'side', | |
'high' | |
); | |
} | |
function product_price_box_content( $post ) { | |
wp_nonce_field( plugin_basename( __FILE__ ), 'product_price_box_content_nonce' ); | |
echo '<label for="product_price"></label>'; | |
echo '<input type="text" id="product_price" name="product_price" placeholder="enter a price" />'; | |
} | |
add_action( 'save_post', 'product_price_box_save' ); | |
function product_price_box_save( $post_id ) { | |
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) | |
return; | |
if ( !wp_verify_nonce( $_POST['product_price_box_content_nonce'], plugin_basename( __FILE__ ) ) ) | |
return; | |
if ( 'page' == $_POST['post_type'] ) { | |
if ( !current_user_can( 'edit_page', $post_id ) ) | |
return; | |
} else { | |
if ( !current_user_can( 'edit_post', $post_id ) ) | |
return; | |
} | |
$product_price = $_POST['product_price']; | |
update_post_meta( $post_id, 'product_price', $product_price ); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment