Last active
August 29, 2015 14:05
-
-
Save sparkweb/fa2d2551db460c39cd6c to your computer and use it in GitHub Desktop.
FoxyShop Wholesale Support Plugin
This file contains hidden or 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
<?php /* | |
************************************************************************** | |
Plugin Name: FoxyShop Wholesale User Add-on | |
Plugin URI: http://www.foxytools.com/ | |
Description: Adds Wholesale User Support, Advanced Custom Fields required | |
Author: SparkWeb Interactive, Inc. | |
Version: 1.0 | |
Author URI: http://www.sparkweb.net/ | |
**************************************************************************/ | |
//Create User Role on Activation | |
register_activation_hook(__FILE__, 'add_roles_on_plugin_activation'); | |
function add_roles_on_plugin_activation() { | |
add_role('wholesale', 'Wholesale', array('read' => true, 'level_0' => true)); | |
} | |
//Check User Role | |
function check_user_role($roles,$user_id=NULL) { | |
if ($user_id) | |
$user = get_userdata($user_id); | |
else | |
$user = wp_get_current_user(); | |
// No user found, return | |
if (empty($user)) | |
return FALSE; | |
// Append administrator to roles, if necessary | |
if (!is_array($roles)) $roles = array($roles); | |
// Loop through user roles | |
foreach ($user->roles as $role) { | |
// Does user have role | |
if (in_array($role,$roles)) { | |
return TRUE; | |
} | |
} | |
// User not in roles | |
return FALSE; | |
} | |
//Notice about ACF Requirement | |
function foxyshop_role_install_acf_prompt() { | |
if (!function_exists("register_field_group")) { | |
?> | |
<div class="updated"> | |
<p>In order to allow the FoxyShop Wholesale Role functionality, please install <a href="plugin-install.php?tab=search&s=advanced+custom+fields">Advanced Custom Fields</a>.</p> | |
</div> | |
<?php | |
} | |
} | |
add_action( 'admin_notices', 'foxyshop_role_install_acf_prompt' ); | |
//Check Products | |
add_filter('foxyshop_setup_product_info', 'foxyshop_role_check_products', 10, 2); | |
function foxyshop_role_check_products($product, $product_id) { | |
global $post; | |
//Check Access | |
if (check_user_role(array("wholesale", "administrator")) || !function_exists("get_field")) { | |
return $product; | |
} | |
if (get_field("access_restriction") == "wholesale" && !check_user_role(array("wholesale", "administrator"))) { | |
$product['hide_product'] = 1; | |
} | |
$product_categories = wp_get_post_terms($product['id'], 'foxyshop_categories', array("fields" => "all")); | |
if ($product_categories && !is_user_logged_in()) { | |
foreach ($product_categories as $term) { | |
$access_restriction = get_field("access", $term->taxonomy . "_" . $term->term_id); | |
if ($access_restriction == "wholesale") { | |
$product['hide_product'] = 1; | |
} | |
} | |
} | |
return $product; | |
} | |
//Custom Category Code | |
add_filter("foxyshop_category_children_write", "my_foxyshop_category_children_write", 10, 2); | |
function my_foxyshop_category_children_write($liwrite, $term) { | |
if (!is_object($term) || !function_exists("get_field")) { | |
return $liwrite; | |
} | |
//Check For Wholesale | |
$access_restriction = get_field("access_restriction", $term->taxonomy . "_" . $term->term_id); | |
if ($access_restriction == "wholesale" && !check_user_role(array("wholesale", "administrator"))) { | |
return ""; | |
} | |
return $liwrite; | |
} | |
//Don't Allow | |
add_action('admin_init', 'foxyshop_role_remove_dashboard'); | |
function foxyshop_role_remove_dashboard() { | |
if (!current_user_can('manage_options') && $_SERVER['DOING_AJAX'] != '/wp-admin/admin-ajax.php') { | |
wp_redirect(home_url()); | |
exit; | |
} | |
} | |
add_action('after_setup_theme', 'foxyshop_role_remove_admin_bar'); | |
function foxyshop_role_remove_admin_bar() { | |
if (!current_user_can('administrator') && !is_admin()) { | |
show_admin_bar(false); | |
} | |
} | |
add_action('admin_init', 'foxyshop_role_register_field_group'); | |
function foxyshop_role_register_field_group() { | |
if(function_exists("register_field_group")) | |
{ | |
register_field_group(array ( | |
'id' => 'acf_product-category', | |
'title' => 'Product Category', | |
'fields' => array ( | |
array ( | |
'key' => 'field_532a0be23246b', | |
'label' => 'Access Restriction', | |
'name' => 'access_restriction', | |
'type' => 'select', | |
'choices' => array ( | |
'none' => 'None', | |
'wholesale' => 'Wholesale Only', | |
), | |
'default_value' => '', | |
'allow_null' => 0, | |
'multiple' => 0, | |
), | |
), | |
'location' => array ( | |
array ( | |
array ( | |
'param' => 'ef_taxonomy', | |
'operator' => '==', | |
'value' => 'foxyshop_categories', | |
'order_no' => '0', | |
'group_no' => '0', | |
), | |
), | |
), | |
'options' => array ( | |
'position' => 'normal', | |
'layout' => 'no_box', | |
'hide_on_screen' => array ( | |
), | |
), | |
'menu_order' => 0, | |
)); | |
register_field_group(array ( | |
'id' => 'acf_product-details', | |
'title' => 'Product Details', | |
'fields' => array ( | |
array ( | |
'key' => 'field_532a0b8fed02f', | |
'label' => 'Access Restriction', | |
'name' => 'access_restriction', | |
'type' => 'select', | |
'choices' => array ( | |
'none' => 'None', | |
'wholesale' => 'Wholesale Only', | |
), | |
'default_value' => '', | |
'allow_null' => 0, | |
'multiple' => 0, | |
), | |
), | |
'location' => array ( | |
array ( | |
array ( | |
'param' => 'post_type', | |
'operator' => '==', | |
'value' => 'foxyshop_product', | |
'order_no' => '0', | |
'group_no' => '0', | |
), | |
), | |
), | |
'options' => array ( | |
'position' => 'normal', | |
'layout' => 'no_box', | |
'hide_on_screen' => array ( | |
), | |
), | |
'menu_order' => 0, | |
)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment