__( 'Shipping validation rules', 'woocommerce-advanced-shipping-validation' ),
'singular_name' => __( 'Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'add_new' => __( 'Add New', 'woocommerce-advanced-shipping-validation' ),
'add_new_item' => __( 'Add New Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'edit_item' => __( 'Edit Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'new_item' => __( 'New Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'view_item' => __( 'View Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'search_items' => __( 'Search Shipping validation rules', 'woocommerce-advanced-shipping-validation' ),
'not_found' => __( 'No Shipping validation rule', 'woocommerce-advanced-shipping-validation' ),
'not_found_in_trash' => __( 'No Shipping validation rules found in Trash', 'woocommerce-advanced-shipping-validation' ),
);
register_post_type( 'shipping_validation', array(
'label' => 'shipping_validation',
'show_ui' => true,
'show_in_menu' => false,
'capability_type' => 'post',
'map_meta_cap' => true,
'rewrite' => false,
'_builtin' => false,
'query_var' => true,
'supports' => array( 'title' ),
'labels' => $labels,
) );
}
/**
* Messages.
*
* Modify the notice messages text for the 'shipping_validation' post type.
*
* @since 1.0.0
*
* @param array $messages Existing list of messages.
* @return array Modified list of messages.
*/
function custom_post_type_messages( $messages ) {
$post = get_post();
$post_type = get_post_type( $post );
$post_type_object = get_post_type_object( $post_type );
$messages['shipping_validation'] = array(
0 => '',
1 => __( 'Shipping validation rule updated.', 'woocommerce-advanced-shipping-validation' ),
2 => __( 'Custom field updated.', 'woocommerce-advanced-shipping-validation' ),
3 => __( 'Custom field deleted.', 'woocommerce-advanced-shipping-validation' ),
4 => __( 'Shipping validation rule updated.', 'woocommerce-advanced-shipping-validation' ),
5 => isset( $_GET['revision'] ) ?
sprintf( __( 'Shipping validation rule restored to revision from %s', 'woocommerce-advanced-shipping-validation' ), wp_post_revision_title( (int) $_GET['revision'], false ) )
: false,
6 => __( 'Shipping validation rule published.', 'woocommerce-advanced-shipping-validation' ),
7 => __( 'Shipping validation rule saved.', 'woocommerce-advanced-shipping-validation' ),
8 => __( 'Shipping validation rule submitted.', 'woocommerce-advanced-shipping-validation' ),
9 => sprintf(
__( 'Shipping validation rule scheduled for: %1$s.', 'woocommerce-advanced-shipping-validation' ),
date_i18n( __( 'M j, Y @ G:i', 'woocommerce-advanced-shipping-validation' ), strtotime( $post->post_date ) )
),
10 => __( 'Shipping validation rule draft updated.', 'woocommerce-advanced-shipping-validation' ),
);
$permalink = admin_url( 'admin.php?page=wc-settings&tab=shipping§ion=shipping_validation' );
$overview_link = sprintf( ' %s', esc_url( $permalink ), __( 'Return to overview.', 'woocommerce-advanced-shipping-validation' ) );
$messages['shipping_validation'][1] .= $overview_link;
$messages['shipping_validation'][6] .= $overview_link;
$messages['shipping_validation'][9] .= $overview_link;
$messages['shipping_validation'][8] .= $overview_link;
$messages['shipping_validation'][10] .= $overview_link;
return $messages;
}
/**
* Meta boxes.
*
* Add two meta boxes to the 'shipping_validation' post type.
*
* @since 1.0.0
*/
public function post_type_meta_box() {
add_meta_box( 'wcasv_conditions', __( 'Shipping validation conditions', 'woocommerce-advanced-shipping-validation' ), array( $this, 'render_conditions' ), 'shipping_validation', 'normal' );
add_meta_box( 'wcasv_settings', __( 'Validation settings', 'woocommerce-advanced-shipping-validation' ), array( $this, 'render_settings' ), 'shipping_validation', 'normal' );
}
/**
* Render meta box.
*
* Get conditions meta box contents.
*
* @since 1.0.0
*/
public function render_conditions() {
// Conditions meta box
require_once plugin_dir_path( __FILE__ ) . 'admin/views/html-meta-box-conditions.php';
}
/**
* Render meta box.
*
* Get settings meta box contents.
*
* @since 1.0.0
*/
public function render_settings() {
// Settings meta box
require_once plugin_dir_path( __FILE__ ) . 'admin/views/html-meta-box-settings.php';
}
/**
* Save meta.
*
* Validate and save post meta. This value contains all
* the normal fee settings (no conditions).
*
* @since 1.0.0
*
* @param int/numberic $post_id ID of the post being saved.
*/
public function save_meta( $post_id ) {
if ( ! isset( $_POST['wcasv_settings_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['wcasv_settings_meta_box_nonce'], 'wcasv_settings_meta_box ' ) ) {
return $post_id;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return $post_id;
}
if ( ! current_user_can( 'manage_woocommerce' ) ) {
return $post_id;
}
// Save sanitized conditions
update_post_meta( $post_id, '_conditions', wpc_sanitize_conditions( $_POST['conditions'] ) );
// Save message
if ( isset( $_POST['validation_message'] ) ) :
update_post_meta( $post_id, '_message', wp_kses_post( $_POST['validation_message'] ) );
endif;
do_action( 'woocommerce_advanced_shipping_validation_save_meta_boxes', $post_id );
}
/**
* Redirect trash.
*
* Redirect user after trashing a WAS post.
*
* @since 1.0.0
*/
public function redirect_after_trash() {
$screen = get_current_screen();
if ( 'edit-shipping_validation' == $screen->id ) :
if ( isset( $_GET['trashed'] ) && intval( $_GET['trashed'] ) > 0 ) :
$redirect = admin_url( 'admin.php?page=wc-settings&tab=shipping§ion=shipping_validation' );
wp_redirect( $redirect );
exit();
endif;
endif;
}
}
/**
* Load condition object
*/
require_once plugin_dir_path( __FILE__ ) . 'admin/class-wcasv-condition.php';