I'm attempting to remove an action and add it with a different priority. Below are all the code snippets that assist in generating a Message:
Include required frontend files
private function frontend_includes() {
require_once( $this->get_plugin_path() . '/includes/wc-memberships-template-functions.php' );
require_once( $this->get_plugin_path() . '/includes/class-wc-memberships-shortcodes.php' );
WC_Memberships_Shortcodes::initialize();
$this->frontend = $this->load_class( '/includes/frontend/class-wc-memberships-frontend.php', 'WC_Memberships_Frontend' );
$this->checkout = $this->load_class( '/includes/frontend/class-wc-memberships-checkout.php', 'WC_Memberships_Checkout' );
$this->restrictions = $this->load_class( '/includes/frontend/class-wc-memberships-restrictions.php', 'WC_Memberships_Restrictions' );
}
Get the product purchasing restricted message
/**
* @param int $post_id Optional. Defaults to current post.
* @return string
*/
public function get_product_purchasing_restricted_message( $post_id = null ) {
if ( ! $post_id ) {
global $post;
$post_id = $post->ID;
}
$products = $this->get_products_that_grant_access( $post_id );
$message = $this->get_restriction_message( 'product_purchasing_restricted', $post_id, $products );
/**
* Filter the product purchasing restricted message
*
* @since 1.0.0
* @param string $message The restriction message
* @param int $product_id ID of the product being restricted
* @param array $products Array of product IDs that grant access to this product
*/
return apply_filters( 'wc_memberships_product_purchasing_restricted_message', $message, $post_id, $products );
}
Restriction class, handles content restriction on frontend
class WC_Memberships_Restrictions {
/** @var array associative array of content conditions for current user **/
private $user_content_access_conditions;
/** @var array of post IDs that content restriction has been applied to **/
private $content_restriction_applied = array();
/** @var string Product content restriction password helper **/
private $product_restriction_password = null;
/** @var bool Product thumbnail removed helper **/
private $product_thumbnail_restricted = false;
public function __construct() {
// Desired action to remove and re-prioritize
add_action( 'woocommerce_single_product_summary', array( $this, 'single_product_purchasing_restricted_message' ), 30 );
}
}
I literally just need to alter the priority to 15 from 30 in the action of the WC_Memberships_Restrictions class. The issue is that there's no clear way to call the removal. Any suggestions?
Well the code you provided shows that the instance of the
WC_Memberships_Restrictions
class is stored in the main class'restrictions
property.From there I just had to look up how to access the instance of the main Membership class, from the bottom of the main plugin file you see:
This means that now to access the instance of the restrictions class we need to access the main class's restriction property. While that sounds clear as mud, basically it means this:
Knowing this, we can known remove and add actions from that class: