私はこれまで、WooCommerceメンバーシッププラグインのアクションを削除するためのremove_action From PHP Classのソリューションを使用しました。remove_action WooCommerceメンバーシップのPHPクラスから
しかし、WooComemerceがメンバーシッププラグインの背後にあるコードを変更したため、ソリューションはもはや機能しません。
これは新しいコードです。
メインwoocommerce-memberships.php
public function includes() {
// load post types
require_once($this->get_plugin_path() . '/includes/class-wc-memberships-post-types.php');
// load user messages helper
require_once($this->get_plugin_path() . '/includes/class-wc-memberships-user-messages.php');
// load helper functions
require_once($this->get_plugin_path() . '/includes/functions/wc-memberships-functions.php');
// init general classes
$this->rules = $this->load_class('/includes/class-wc-memberships-rules.php', 'WC_Memberships_Rules');
$this->plans = $this->load_class('/includes/class-wc-memberships-membership-plans.php', 'WC_Memberships_Membership_Plans');
$this->emails = $this->load_class('/includes/class-wc-memberships-emails.php', 'WC_Memberships_Emails');
$this->user_memberships = $this->load_class('/includes/class-wc-memberships-user-memberships.php', 'WC_Memberships_User_Memberships');
$this->capabilities = $this->load_class('/includes/class-wc-memberships-capabilities.php', 'WC_Memberships_Capabilities');
$this->member_discounts = $this->load_class('/includes/class-wc-memberships-member-discounts.php', 'WC_Memberships_Member_Discounts');
$this->restrictions = $this->load_class('/includes/class-wc-memberships-restrictions.php', 'WC_Memberships_Restrictions');
メインインスタンス
function wc_memberships() {
return WC_Memberships::instance();
}
含まクラス-WC-会員-restrictions.phpファイルから
/**
* Returns the general content restrictions handler.
*
* @since 1.9.0
*
* @return null|\WC_Memberships_Posts_Restrictions
*/
public function get_posts_restrictions_instance() {
if (! $this->posts_restrictions instanceof WC_Memberships_Posts_Restrictions) {
$this->posts_restrictions = wc_memberships()->load_class('/includes/frontend/class-wc-memberships-posts-restrictions.php', 'WC_Memberships_Posts_Restrictions');
}
return $this->posts_restrictions;
}
クラス-WC-メンバーシップ・ポスト-restrictions.php i 'はthe_post' アクションを削除するにはどうすればよい
public function __construct() {
// decide whether attempting to access restricted content has to be redirected
add_action('wp', array($this, 'handle_restriction_modes'));
// restrict the post by filtering the post object and replacing the content with a message and maybe excerpt
add_action('the_post', array($this, 'restrict_post'), 0);
で次に
?私に「空白のページ」-errorを与える
function weteach_remove_actions(){
if(is_singular('post')) {
if(function_exists('wc_memberships')){
remove_action('the_post', array(wc_memberships()->restrictions, 'restrict_post'));
}
}
return;
}
add_action('the_post', 'weteach_remove_actions', 1);
:
は、これまでのところ私はのfunctions.phpのテーマファイルに次のように持っています。
空白のページは、サイトのエラーを意味し、wp-configのWP_DEBUGをオンにして、取得したエラーを確認し、最初に修正します。 – davey
こんにちは、anwserに感謝します。私はWP_DEBUGを有効にしましたが、まだ空白の画面が表示されています。私はまた、 "add_action( 'wp'、 'weteach_remove_actions'、1);"代わりにog "add_action( 'the_post'、 'weteach_remove_actions'、1);" –
また、 'WP_DEBUG_LOG'をオンにして、エラーを' wp-content/debug.log'に記録してみてください。このコードでは主な 'woocommerce-memberships.php'ファイルの' get_restrictions_instance() 'が見つからなかったので、私は' post_restrictions'に正しくアクセスしていませんでした。私の編集を確認してください。 – helgatheviking