2011-09-16 08:10:12 +00:00
< ? php
/**
2012-08-14 12:21:34 +00:00
* Admin taxonomy functions
2011-09-16 08:10:12 +00:00
*
* These functions control admin interface bits like category ordering .
*
* @ author WooThemes
* @ category Admin
2012-08-14 12:21:34 +00:00
* @ package WooCommerce / Admin / Taxonomies
* @ version 1.6 . 4
2011-09-16 08:10:12 +00:00
*/
2011-10-07 19:27:10 +00:00
2012-10-15 10:32:24 +00:00
if ( ! defined ( 'ABSPATH' ) ) exit ; // Exit if accessed directly
2011-09-16 08:10:12 +00:00
/**
2012-08-14 12:21:34 +00:00
* Category thumbnail fields .
*
* @ access public
* @ return void
2011-09-16 08:10:12 +00:00
*/
2011-10-07 19:27:10 +00:00
function woocommerce_add_category_thumbnail_field () {
global $woocommerce ;
?>
< div class = " form-field " >
2012-01-05 11:31:22 +00:00
< label >< ? php _e ( 'Thumbnail' , 'woocommerce' ); ?> </label>
2012-02-24 16:23:08 +00:00
< div id = " product_cat_thumbnail " style = " float:left;margin-right:10px; " >< img src = " <?php echo woocommerce_placeholder_img_src(); ?> " width = " 60px " height = " 60px " /></ div >
2011-10-07 19:27:10 +00:00
< div style = " line-height:60px; " >
< input type = " hidden " id = " product_cat_thumbnail_id " name = " product_cat_thumbnail_id " />
2012-01-05 11:31:22 +00:00
< button type = " submit " class = " upload_image_button button " >< ? php _e ( 'Upload/Add image' , 'woocommerce' ); ?> </button>
< button type = " submit " class = " remove_image_button button " >< ? php _e ( 'Remove image' , 'woocommerce' ); ?> </button>
2011-10-07 19:27:10 +00:00
</ div >
< script type = " text/javascript " >
2012-08-23 10:41:21 +00:00
// Only show the "remove image" button when needed
if ( ! jQuery ( '#product_cat_thumbnail_id' ) . val () )
jQuery ( '.remove_image_button' ) . hide ();
2012-08-14 12:21:34 +00:00
2012-04-16 12:52:28 +00:00
window . send_to_editor_default = window . send_to_editor ;
2011-12-12 16:34:56 +00:00
window . send_to_termmeta = function ( html ) {
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
jQuery ( 'body' ) . append ( '<div id="temp_image">' + html + '</div>' );
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
var img = jQuery ( '#temp_image' ) . find ( 'img' );
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
imgurl = img . attr ( 'src' );
imgclass = img . attr ( 'class' );
imgid = parseInt ( imgclass . replace ( / \D / g , '' ), 10 );
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
jQuery ( '#product_cat_thumbnail_id' ) . val ( imgid );
jQuery ( '#product_cat_thumbnail img' ) . attr ( 'src' , imgurl );
2012-08-23 10:41:21 +00:00
jQuery ( '.remove_image_button' ) . show ();
2011-12-12 16:34:56 +00:00
jQuery ( '#temp_image' ) . remove ();
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
tb_remove ();
2012-08-14 12:21:34 +00:00
2012-04-16 12:52:28 +00:00
window . send_to_editor = window . send_to_editor_default ;
2011-12-12 16:34:56 +00:00
}
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
jQuery ( '.upload_image_button' ) . live ( 'click' , function (){
var post_id = 0 ;
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
window . send_to_editor = window . send_to_termmeta ;
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
tb_show ( '' , 'media-upload.php?post_id=' + post_id + '&type=image&TB_iframe=true' );
return false ;
});
2012-08-14 12:21:34 +00:00
2011-12-12 16:34:56 +00:00
jQuery ( '.remove_image_button' ) . live ( 'click' , function (){
2012-02-24 16:23:08 +00:00
jQuery ( '#product_cat_thumbnail img' ) . attr ( 'src' , '<?php echo woocommerce_placeholder_img_src(); ?>' );
2011-12-12 16:34:56 +00:00
jQuery ( '#product_cat_thumbnail_id' ) . val ( '' );
2012-08-23 10:41:21 +00:00
jQuery ( '.remove_image_button' ) . hide ();
2011-12-12 16:34:56 +00:00
return false ;
});
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
</ script >
< div class = " clear " ></ div >
</ div >
< ? php
}
2012-08-14 12:21:34 +00:00
add_action ( 'product_cat_add_form_fields' , 'woocommerce_add_category_thumbnail_field' );
add_action ( 'product_cat_edit_form_fields' , 'woocommerce_edit_category_thumbnail_field' , 10 , 2 );
/**
* Edit category thumbnail field .
*
* @ access public
* @ param mixed $term Term ( category ) being edited
* @ param mixed $taxonomy Taxonomy of the term being edited
* @ return void
*/
2011-10-07 19:27:10 +00:00
function woocommerce_edit_category_thumbnail_field ( $term , $taxonomy ) {
global $woocommerce ;
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
$image = '' ;
$thumbnail_id = get_woocommerce_term_meta ( $term -> term_id , 'thumbnail_id' , true );
if ( $thumbnail_id ) :
$image = wp_get_attachment_url ( $thumbnail_id );
else :
2012-02-24 16:23:08 +00:00
$image = woocommerce_placeholder_img_src ();
2011-10-07 19:27:10 +00:00
endif ;
?>
< tr class = " form-field " >
2012-01-05 11:31:22 +00:00
< th scope = " row " valign = " top " >< label >< ? php _e ( 'Thumbnail' , 'woocommerce' ); ?> </label></th>
2011-10-07 19:27:10 +00:00
< td >
< div id = " product_cat_thumbnail " style = " float:left;margin-right:10px; " >< img src = " <?php echo $image ; ?> " width = " 60px " height = " 60px " /></ div >
< div style = " line-height:60px; " >
< input type = " hidden " id = " product_cat_thumbnail_id " name = " product_cat_thumbnail_id " value = " <?php echo $thumbnail_id ; ?> " />
2012-01-05 11:31:22 +00:00
< button type = " submit " class = " upload_image_button button " >< ? php _e ( 'Upload/Add image' , 'woocommerce' ); ?> </button>
< button type = " submit " class = " remove_image_button button " >< ? php _e ( 'Remove image' , 'woocommerce' ); ?> </button>
2011-10-07 19:27:10 +00:00
</ div >
< script type = " text/javascript " >
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
window . send_to_termmeta = function ( html ) {
2012-08-14 12:21:34 +00:00
2011-10-28 08:56:19 +00:00
jQuery ( 'body' ) . append ( '<div id="temp_image">' + html + '</div>' );
2012-08-14 12:21:34 +00:00
2011-10-28 08:56:19 +00:00
var img = jQuery ( '#temp_image' ) . find ( 'img' );
2012-08-14 12:21:34 +00:00
2011-10-28 08:56:19 +00:00
imgurl = img . attr ( 'src' );
imgclass = img . attr ( 'class' );
imgid = parseInt ( imgclass . replace ( / \D / g , '' ), 10 );
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
jQuery ( '#product_cat_thumbnail_id' ) . val ( imgid );
jQuery ( '#product_cat_thumbnail img' ) . attr ( 'src' , imgurl );
2011-10-28 08:56:19 +00:00
jQuery ( '#temp_image' ) . remove ();
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
tb_remove ();
}
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
jQuery ( '.upload_image_button' ) . live ( 'click' , function (){
var post_id = 0 ;
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
window . send_to_editor = window . send_to_termmeta ;
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
tb_show ( '' , 'media-upload.php?post_id=' + post_id + '&type=image&TB_iframe=true' );
return false ;
});
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
jQuery ( '.remove_image_button' ) . live ( 'click' , function (){
2012-02-24 16:23:08 +00:00
jQuery ( '#product_cat_thumbnail img' ) . attr ( 'src' , '<?php echo woocommerce_placeholder_img_src(); ?>' );
2011-10-07 19:27:10 +00:00
jQuery ( '#product_cat_thumbnail_id' ) . val ( '' );
return false ;
});
2012-08-14 12:21:34 +00:00
2011-10-07 19:27:10 +00:00
</ script >
< div class = " clear " ></ div >
</ td >
</ tr >
< ? php
}
2012-08-14 12:21:34 +00:00
/**
* woocommerce_category_thumbnail_field_save function .
*
* @ access public
* @ param mixed $term_id Term ID being saved
* @ param mixed $tt_id
* @ param mixed $taxonomy Taxonomy of the term being saved
* @ return void
*/
2011-10-07 19:27:10 +00:00
function woocommerce_category_thumbnail_field_save ( $term_id , $tt_id , $taxonomy ) {
2012-08-14 12:21:34 +00:00
if ( isset ( $_POST [ 'product_cat_thumbnail_id' ] ) )
update_woocommerce_term_meta ( $term_id , 'thumbnail_id' , $_POST [ 'product_cat_thumbnail_id' ] );
2011-10-07 19:27:10 +00:00
}
2012-08-14 12:21:34 +00:00
add_action ( 'created_term' , 'woocommerce_category_thumbnail_field_save' , 10 , 3 );
add_action ( 'edit_term' , 'woocommerce_category_thumbnail_field_save' , 10 , 3 );
2011-12-04 02:08:05 +00:00
/**
2012-08-14 12:21:34 +00:00
* Description for product_cat page to aid users .
*
* @ access public
* @ return void
2011-12-04 02:08:05 +00:00
*/
function woocommerce_product_cat_description () {
2012-08-14 12:21:34 +00:00
echo wpautop ( __ ( 'Product categories for your store can be managed here. To change the order of categories on the front-end you can drag and drop to sort them. To see more categories listed click the "screen options" link at the top of the page.' , 'woocommerce' ) );
2011-12-04 02:08:05 +00:00
}
2012-08-14 12:21:34 +00:00
add_action ( 'product_cat_pre_add_form' , 'woocommerce_product_cat_description' );
2011-12-02 18:54:52 +00:00
/**
2012-08-14 12:21:34 +00:00
* Description for shipping class page to aid users .
*
* @ access public
* @ return void
2011-12-02 18:54:52 +00:00
*/
function woocommerce_shipping_class_description () {
2012-01-05 11:31:22 +00:00
echo wpautop ( __ ( 'Shipping classes can be used to group products of similar type. These groups can then be used by certain shipping methods to provide different rates to different products.' , 'woocommerce' ));
2011-12-02 18:54:52 +00:00
2011-12-07 15:34:31 +00:00
}
2012-08-14 12:21:34 +00:00
add_action ( 'product_shipping_class_pre_add_form' , 'woocommerce_shipping_class_description' );
2011-12-07 15:34:31 +00:00
/**
2012-08-14 12:21:34 +00:00
* Fix for the per_page option
*
2011-12-07 15:34:31 +00:00
* Trac : http :// core . trac . wordpress . org / ticket / 19465
2012-08-14 12:21:34 +00:00
*
* @ access public
* @ param mixed $per_page
* @ param mixed $post_type
* @ return void
2011-12-07 15:34:31 +00:00
*/
function woocommerce_fix_edit_posts_per_page ( $per_page , $post_type ) {
2012-08-14 12:21:34 +00:00
if ( $post_type !== 'product' )
return $per_page ;
2011-12-07 15:34:31 +00:00
$screen = get_current_screen ();
2012-08-14 12:21:34 +00:00
if ( strstr ( $screen -> id , '-' ) ) {
$option = 'edit_' . str_replace ( 'edit-' , '' , $screen -> id ) . '_per_page' ;
if ( isset ( $_POST [ 'wp_screen_options' ][ 'option' ] ) && $_POST [ 'wp_screen_options' ][ 'option' ] == $option ) {
2011-12-07 15:34:31 +00:00
update_user_meta ( get_current_user_id (), $option , $_POST [ 'wp_screen_options' ][ 'value' ] );
2012-08-14 12:21:34 +00:00
2011-12-07 15:34:31 +00:00
wp_redirect ( remove_query_arg ( array ( 'pagenum' , 'apage' , 'paged' ), wp_get_referer () ) );
exit ;
2012-08-14 12:21:34 +00:00
}
2011-12-07 15:34:31 +00:00
$user_per_page = ( int ) get_user_meta ( get_current_user_id (), $option , true );
2012-08-14 12:21:34 +00:00
if ( $user_per_page )
$per_page = $user_per_page ;
2011-12-07 15:34:31 +00:00
}
2012-08-14 12:21:34 +00:00
2011-12-07 15:34:31 +00:00
return $per_page ;
2011-12-19 00:07:28 +00:00
}
2012-08-14 12:21:34 +00:00
add_filter ( 'edit_posts_per_page' , 'woocommerce_fix_edit_posts_per_page' , 1 , 2 );
/**
* Thumbnail column added to category admin .
*
* @ access public
* @ param mixed $columns
* @ return void
*/
function woocommerce_product_cat_columns ( $columns ) {
$new_columns = array ();
$new_columns [ 'cb' ] = $columns [ 'cb' ];
$new_columns [ 'thumb' ] = __ ( 'Image' , 'woocommerce' );
unset ( $columns [ 'cb' ] );
return array_merge ( $new_columns , $columns );
}
add_filter ( 'manage_edit-product_cat_columns' , 'woocommerce_product_cat_columns' );
/**
* Thumbnail column value added to category admin .
*
* @ access public
* @ param mixed $columns
* @ param mixed $column
* @ param mixed $id
* @ return void
*/
function woocommerce_product_cat_column ( $columns , $column , $id ) {
global $woocommerce ;
if ( $column == 'thumb' ) {
$image = '' ;
$thumbnail_id = get_woocommerce_term_meta ( $id , 'thumbnail_id' , true );
if ( $thumbnail_id )
$image = wp_get_attachment_url ( $thumbnail_id );
else
$image = woocommerce_placeholder_img_src ();
$columns .= '<img src="' . $image . '" alt="Thumbnail" class="wp-post-image" height="48" width="48" />' ;
}
return $columns ;
}
add_filter ( 'manage_product_cat_custom_column' , 'woocommerce_product_cat_column' , 10 , 3 );
2011-12-23 19:27:12 +00:00
/**
2012-08-14 12:21:34 +00:00
* Add a configure button column for the shipping classes page .
*
* @ access public
* @ param mixed $columns
* @ return void
2011-12-23 19:27:12 +00:00
*/
2012-08-14 12:21:34 +00:00
function woocommerce_shipping_class_columns ( $columns ) {
$columns [ 'configure' ] = ' ' ;
return $columns ;
}
add_filter ( 'manage_edit-product_shipping_class_columns' , 'woocommerce_shipping_class_columns' );
2011-12-23 19:27:12 +00:00
2011-12-19 00:07:28 +00:00
/**
2012-08-14 12:21:34 +00:00
* Add a configure button for the shipping classes page .
*
* @ access public
* @ param mixed $columns
* @ param mixed $column
* @ param mixed $id
* @ return void
2011-12-19 00:07:28 +00:00
*/
2012-08-14 12:21:34 +00:00
function woocommerce_shipping_class_column ( $columns , $column , $id ) {
if ( $column == 'configure' )
$columns .= '<a href="' . admin_url ( 'edit-tags.php?action=edit&taxonomy=product_shipping_class&tag_ID=' . $id . '&post_type=product' ) . '" class="button alignright">' . __ ( 'Configure shipping class' , 'woocommerce' ) . '</a>' ;
return $columns ;
}
add_filter ( 'manage_product_shipping_class_custom_column' , 'woocommerce_shipping_class_column' , 10 , 3 );